jjzjj

returned

全部标签

c++ - 在 void C/C++ 例程末尾添加 return 语句有什么意义?

我看到函数/方法在函数末尾有return语句的签名中带有voidreturn。这是什么原因,这是否适用于其他语言?据我所知,如果我想在函数末尾以外的任何地方退出,我可以使用return。C示例:voidfunction(void){intx=1+2;return;//whatdoweneedthisfor,ifatall?} 最佳答案 这在这里似乎毫无意义。但我的猜测是,这种东西可用于在不支持在右大括号处放置断点的IDE中放置断点,并且通过在此处放置断点,可以在监window口等中检查某些值。

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++ - 为什么 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++ - 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++ - 设计建议——返回子类时避免 "invalid covariant return type"

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

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;}除了“优雅”之

c++ - 视觉 C++ 错误 : function must return a value

我正在做一个多平台项目,有些平台禁用了功能,在这些功能的界面中,我经常做的事情是这样的:boolFoo::bar()const{//disabledabort();}GCC/LLVM不要求非void函数返回值(它们只是给出警告),在这种情况下,我调用abort()时,它们足够聪明,甚至不会发出警告(因为该函数永远不会返回)。有没有办法(编译标志?)让VisualC++2010以相同的方式运行,这样我就不会继续破坏Windows构建?我知道我总是可以在中止后返回值,但在其他平台上工作时我通常会忘记这一点,不给出错误的行为似乎更合适。 最佳答案

c++ - 如果函数调用是 return 语句,编译器能否自动 move 函数参数?

在以下情况下,编译器可以自动move函数参数v还是必须手动声明?std::vectorFilter(std::vectorv);voidDoSomeStuffAndCallFilter(std::vectorv){//dosomestufftov//canthecompilerautomaticallystd::movevinthiscall?//ie.returnFilter(std::move(v));//returnFilter(v);} 最佳答案 在您的情况下,编译器可以在as-if规则下作为允许的优化来执行此操作,因为它非

c++ - 是否允许在 requires 表达式中为 return-type-requirement 指定类型?

看看这个简单的概念示例:templaterequiresrequires(Tt){{t+t}->bool;}voidfn(){}intmain(){fn();}这里,我使用bool作为return-type-requirement的type-constraint。当前稿says:type-constraint:nested-name-specifieroptconcept-namenested-name-specifieroptconcept-name所以type-constraint必须是一个concept-name。bool(或任何类型)是否允许作为概念名称?如果是,那是什么意思,