Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.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++ 最重要的const&;右值参考值_C++_C++11 - Fatal编程技术网

C++ 最重要的const&;右值参考值

C++ 最重要的const&;右值参考值,c++,c++11,C++,C++11,在C++03中,可以使用常量&技巧(或“最重要常量”)将临时变量的生存期延长到引用的生存期。我的问题是,在C++0x中,这种行为是否扩展到右值引用?即auto&&x=someFunction()根据[class.temporary],如果编译成功,则会延长临时文件的生存期。它在VC10 SP1上完美编译: int && Get() { return 10; } const auto&& y=Get(); 你为什么需要这个?”const auto&'执行

在C++03中,可以使用
常量&
技巧(或“最重要常量”)将临时变量的生存期延长到引用的生存期。我的问题是,在C++0x中,这种行为是否扩展到右值引用?即
auto&&x=someFunction()

根据
[class.temporary]
,如果编译成功,则会延长临时文件的生存期。

它在VC10 SP1上完美编译:

int && Get()
{
    return 10;
}

const auto&& y=Get();

你为什么需要这个?”const auto&'执行完全相同的工作。您可以修改临时值。实际上,如果您查看移动构造函数,它们正是这样做的。如果
someFunction
返回左值,
auto&
也会自动调整。使
自动&&
成为左值引用。您的初始化错误。在这种情况下,
x
总是被推断为对
std::initializer\u list
auto
的引用,它特别处理带括号的初始化器列表。没有明确提到右值引用,尽管我认为这是术语“references”所隐含的。但是,这让我感到不安。参见§8.3.2/2:使用&声明的引用类型称为左值引用,使用&声明的引用类型称为右值引用。(…)除非明确指出,它们在语义上是等价的,通常称为引用。