草庐IT

warn_unused_result

全部标签

c++ - 用C++17编译Eigen需要_SILENCE_CXX17_NEGATORS_DEPRECATION_WARNING定义

我正在尝试分配一个稀疏矩阵block,但无法让它工作。似乎eigen使用的函数已被弃用,我可以用一些定义来修复它。但是,我确定我是应该将这些定义添加到项目中还是等待更新版本的Eigen。你们能否就定义的副作用提出建议。我写的程序是这样的#includeintmain(){Eigen::SparseMatrixm(4,4);m.block(0,0,2,2)这是警告:1>d:\eigen_3.3.4\eigen\src\core\functors\stlfunctors.h(87):errorC4996:'std::unary_negate':warningSTL4008:std::not

c++ - %llx 格式说明符 : invalid warning?

已编辑以删除第一个警告以下代码在mingw32下的g++4.4.0中按预期工作:#includeintmain(){longlongx=0xdeadbeefc0defaceLL;printf("%llx\n",x);}但是如果我使用-Wall启用所有警告,它会说:f.cpp:Infunction'intmain()':f.cpp:5:warning:unknownconversiontypecharacter'l'informatf.cpp:5:warning:toomanyargumentsforformat%lld也是一样。这在较新的版本中已修复吗?再次编辑添加:如果我指定-std

c++ - result_of 对我不起作用

#includeusingnamespacestd;structasd{voidf();};intf();typedeftypenameresult_of::typeresult_free;typedeftypenameresult_of::typeresult_mem;两个typedef都报错Infileincludedfrom../main.cpp:1:0:/usr/include/c++/4.6/type_traits:Ininstantiationof‘std::_Result_of_impl’:/usr/include/c++/4.6/type_traits:1215:12:

c++ - 将pugixml的result.offset转换为column/line

我需要为使用pugixml的应用程序提供用户友好的错误报告。我目前正在使用result.offset。有没有办法获取行和列?我可能会处理大型XML文件,如果这有所不同的话。 最佳答案 此功能在pugixml中不容易使用,因为在每次解析时执行此操作的成本相对较高,并且在解析完成后,在一般情况下不可能恢复文件/行信息。这是一个构建偏移量->线映射的片段,您可以在解析失败或出于其他原因需要该信息时使用它;随意调整文件I/O代码以满足您的要求。typedefstd::vectoroffset_data_t;boolbuild_offset_

c++ - 使用 std::result_of 确定模板参数的返回类型

我认为这段代码是不言自明的,但基本上模板函数ExecFunc应该能够执行另一个函数并返回其结果。我知道我可以使用decltype而不是result_of获得类似的结果,但这个问题是为了理解为什么我写的东西不起作用:该片段无法在gccv4.9.2上编译。这是我的:#includeintf(inti){returni;}templateautoExecFunc(Ff,Targ)->typenamestd::result_of::type{returnf(arg);}intmain(){autoa=ExecFunc(f,3);return0;}这是编译器的输出:prova.cpp:Infun

c++ - 最烦人的解析 : why doesn't `g( ( f() ) );` call `f` 's default constructor and pass the result to `g` 's ctor that takes a `f` ?

这不是Mostvexingparse:whydoesn'tAa(());work?的拷贝,它基于Aa());形式的解析,其OP认为可以使用额外的集合默认构造一个A对象括号。相比之下,我的问题是关于2个类,f和g,其中f具有默认构造函数,而g的构造函数采用f。我想用一个临时的f参数调用g的构造函数,而不使用统一的初始化语法。g的构造函数中有一个std::cout语句,因此缺少输出表示函数声明而不是g对象实例化。我在注释中用3个数字注释了示例代码。#1和#2编译时#3被注释掉,反之亦然:#includestructf{};structg{g(f){std::cout#1:我认为#1声明了一

c++ - 'unused' 的初始化被 'goto label' 跳过 - 为什么我为 std::string 而不是为 int 获取它?

我在某些代码中遇到了这个错误,经过一些试验后我偶然发现了这个怪异之处——我为std::string得到了它,但没有为int得到它。对于std::string我得到errorC2362:initializationof'unused'isskippedby'gotolabel':{gotolabel;std::stringunused;label:;}对于int我没有收到任何错误,但是:{gotolabel;intunused=10;label:;}为什么不同?是因为std::string有一个非平凡的析构函数吗? 最佳答案 这包含在

c++ - VS 编译警告 : result of 32-bit shift implicitly converted to 64 bits

VisualStudio2013发出恼人的(看似无关紧要的)编译警告:#include#definePRECISION16uint64_thi=0;for(uint8_ti=0;i这是编译警告:warningC4334:'改1好像解决了至1.所以我一直在尝试找出1中可能出现的问题.显然,如果i>=PRECISION,那么左移操作将产生未定义的行为。但是,变量i不超过PRECISION-1的值.此外,即使我们假设编译器无法推断出这个事实,我也看不出这个编译警告与左移操作数导致的潜在未定义行为有什么关系。也许它假定PRECISION-1-i的无符号值可以大于31。但是我应该如何告诉编译器它

c++ - 杂乱的函数指针 : how to remove the warning?

正如我在thispost中提问和回答的那样.我有以下示例代码。#includecharfoo(){return'a';}charbar(){return'b';}charblurga(){return'c';}charbletch(){return'd';}char(*gfunclist[])()={foo,bar,blurga,bletch};char(*(*x())[])(){staticchar(*funclist[4])()={foo,bar,blurga,bletch};returnfunclist;}intmain(){printf("%c\n",gfunclist[0](

c++ - "#pragma GCC diagnostic warning"与海湾合作委员会

这个问题在这里已经有了答案:HowcanIdisable#pragmawarnings?(5个答案)关闭9年前。我使用GCC4.5.1并收到如下警告:warning:expected[error|warning|ignored]after'#pragmaGCCdiagnostic'原因是“#pragmaGCCdiagnosticpush”,对于4.6版之前的GCC不存在。我不能更改代码(这不是我的)和GCC版本。我怎样才能禁用这些警告?一些GCcflags可能是?P.S.:我看到Why"pragmaGCCdiagnosticpush"popwarninginGCC/C++?,但我的问题