草庐IT

return_value_policy

全部标签

c++ - 试图仅在 g++ 的宏中使 -Waggregate-return 保持沉默 - 错误的编译器?

使用g++并使用-Waggregate-return编译#defineDOCTEST_CHECK(expr)\do{\_Pragma("GCCdiagnosticpush");\_Pragma("GCCdiagnosticignored\"-Waggregate-return\"");\if(Resultfailed=(ExpressionDecomposer()但是手动展开的版本不会产生任何警告:do{_Pragma("GCCdiagnosticpush");_Pragma("GCCdiagnosticignored\"-Waggregate-return\"");if(Result

c++ - 为什么将 return 移动到函数末尾效率较低?

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭10年前。编辑:删除UB后(好地方,我错过了),时间或多或少相同。将标记版主将其删除。这两个函数是相同的,除了foo在两个分支上的if中都有返回,而goo有一个单个return最后:intfoo(){staticintx=0;if(x){x>2?x=0:++x;returnx-1;}else{x++;returnx-1;}}intgoo(){staticintx=0;if(x){x>2?x=0:++x;}

c++ - iterator_traits<InIter>::value_type 的创建是否会在传递时触发遵从? (异常测试)

我在故意为不特别遵守迭代器的函数抛出异常(出于测试目的)时遇到了麻烦。要了解我在做什么,请带上我的decorator_iterator结构:structdecorated_iterator:boost::iterator_adaptor,BaseIterator,boost::use_default,IteratorTag>{//....private:friendclassboost::iterator_core_access;/*usedtothrowanexceptionupondereference*/typenamebase_type::referencedereferenc

c++ - 为什么 for_each + lambda 会触发 -Waggregate-return 警告?

当尝试使用gcc和-Waggregate-return标记警告的以下示例时:functioncallhasaggregatevaluetriggers:structElement{//...stuff...}Containerelements(10);for_each(begin(elements),end(elements),[](Element&e){//...modifyelements...});据我所知,-Waggregate-return标记“如果定义或调用任何返回结构或union的函数时发出警告”,因为如果我理解正确的话,您可能通过返回足够大的对象来溢出堆栈。但是,for

c++ - C4800 有任何实际值(value)吗?

MicrosoftC++编译器中的C4800警告如下所述:https://msdn.microsoft.com/en-us/library/b6801kcy.aspx制作这段代码://C4800.cpp//compilewith:/W3intmain(){inti=0;//try..//booli=0;boolj=i;//C4800j++;}抛出C4800警告:“'type':forcingvaluetobool'true'or'false'(performancewarning)”Microsoft似乎认为它相当重要,并将其列为3级警告,但Clang显然认为它不是,因为它的最高警告级

c++ - const ref lvalue to non-const func return value 是否专门减少拷贝?

我遇到了一个C++习惯,我试图研究它以了解它的影响并验证它的用法。但我似乎找不到确切的答案。std::vectorgetThings();voiddo(){conststd::vector&things=getThings();}这里我们有一些返回非const&值的函数。我看到的习惯是在分配函数的返回值时使用const&左值。提出这个习惯的原因是它减少了拷贝。现在我一直在研究RVO(返回值优化)、复制省略和C++11移动语义。我意识到给定的编译器可以选择阻止通过RVO进行复制,不管这里是否使用了const&。但是,在防止复制方面,const&左值的使用对非const&返回值有任何影响吗

c++ - 编译cuda文件报错: "runtime library" mismatch value 'MDd_DynamicDebug' doesn't match value 'MTd_StaticDebug' in vectorAddition_cuda. o

我尝试在Qt5.2和MSVC2012环境下编译一个cuda文件。在开始我的项目之前,我仔细阅读了问题并回复:CompilingCudacodeinQtCreatoronWindows.但是即使我简单地复制代码并在qt中生成2个文件,仍然会弹出一些错误/main.cpp/vectorAddition.cu错误是:errorLNK2038:mismatchdetectedfor'RuntimeLibrary':value'MDd_DynamicDebug'doesn'tmatchvalue'MTd_StaticDebug'invectorAddition_cuda.o我完全不知道如何修复这

c++ - 设计建议——返回子类时避免 "invalid covariant return type"

我有以下情况:我指定一个纯虚函数:虚拟PredictedMatchPredictMatch(constMatch&match)const=0;我还有:类ImpactPredictedMatch:publicPredictedMatch现在,我想做的是:ImpactPredictedMatchPredictMatch(constMatch&match)const;在一个实现了之前的纯虚函数的类中。我原以为编译器会根据需要简单地转换返回的类型,但我得到:impact_predictor.h:18:24:错误:“虚拟ImpactPredictedMatchImpactPredictor::P

c++ - Visual Studio 2008 : how to pause the running program to see a variable value?

我已经开始了一个很长的循环,我不想重新开始(已经运行了3个小时,我计算它只运行了1个小时),我担心我的程序运行不正确,因为它花了这么长时间长。我太愚蠢了,无法为自己实际输出任何状态值(我认为这不会花费3个该死的小时)。那么,当程序以“发布”模式从visualstudio启动时,是否有某种方法可以监视一个特定的变量值? 最佳答案 你要做的是附加到正在运行的进程加载代表项目的解决方案工具->附加到流程选择正在运行的进程并点击附加点击IDE上的暂停按钮停止进程或设置断点此时你将在调试器中崩溃并能够检查正在运行的程序

c++ - 为什么要在这个 return 语句中使用这个逗号?

这个问题在这里已经有了答案:Whatdoesthecommaoperator,do?(8个答案)C++--returnx,y;Whatisthepoint?(18个答案)关闭6年前。我明白这个C++函数是做什么的,但是我不明白为什么return语句是这样写的:intintDivide(intnum,intdenom){returnassert(denom!=0),num/denom;}这里只有一个语句,因为只有一个;但逗号让我很困惑。为什么不写:intintDivide(intnum,intdenom){assert(denom!=0);returnnum/denom;}除了“优雅”之