Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 按常量值返回是否会影响返回值优化?_C++_Return Value Optimization_Rvo - Fatal编程技术网

C++ 按常量值返回是否会影响返回值优化?

C++ 按常量值返回是否会影响返回值优化?,c++,return-value-optimization,rvo,C++,Return Value Optimization,Rvo,以函数为例 const std::string f() { return "hello"; } 电话呢 std::string x = f(); 无论值返回类型是否应为const,返回值为const这一事实是否会阻止编译器执行返回值优化 我对RVO的理解是,返回的对象直接构造到函数外部的变量中。但是,如果返回类型是const T,这与T不同,那么RVO会被阻止吗?我知道你说过“不管[…]const与否”,链接问题(和其他问题)中的答案在现代和旧时代都会重复这个特定问题。@Rapptz

以函数为例

const std::string f()
{
    return "hello";
}
电话呢

std::string x = f();
无论值返回类型是否应为const,返回值为const这一事实是否会阻止编译器执行返回值优化


我对RVO的理解是,返回的对象直接构造到函数外部的变量中。但是,如果返回类型是
const T
,这与
T
不同,那么RVO会被阻止吗?

我知道你说过“不管[…]const与否”,链接问题(和其他问题)中的答案在现代和旧时代都会重复这个特定问题。@Rapptz我认为这不是重复。您发现的问题非常正确地回答了现在函数不应该返回
const std::string
。这个问题不是你是否应该这样做,而是如果你这样做了具体会发生什么。这是一个相关的问题,但不是一个重复的IMO。@hvd我不相信这个问题的答案会增加任何价值,因为链接的问题回答了事件的最终状态,也就是说,它禁止移动语义,也禁止RVO,因为必须复制。@Rapptz你是说链接的问题有答案,说明在这种情况下禁止RVO?@Rapptz换句话说,链接的问题不回答我的问题。