局部变量的引用折叠

Posted

技术标签:

【中文标题】局部变量的引用折叠【英文标题】:reference collapsing for local variables 【发布时间】:2011-08-11 09:39:39 【问题描述】:

在以T 参数化的函数模板中,T&& 类型可能是也可能不是右值引用,具体取决于参数的值类别:

template <typename T>
void function(T&& x)

    // ...


std::string some_named_string;
function(some_named_string);       // T&& is std::string&

function(std::string("hello"));    // T&& is std::string&&

同样的规则是否也适用于自动推断类型的局部变量?

auto&& x = some_named_string;      // is x a std::string& here?
auto&& y = std::string("hello");   // is y a std::string&& here?

【问题讨论】:

【参考方案1】:

是的。 auto 完全指定为模板参数推导。

【讨论】:

以上是关于局部变量的引用折叠的主要内容,如果未能解决你的问题,请参考以下文章

C语言局部变量与全局变量重名时的优先级问题(当局部变量和全局变量同时存在的时候,优先引用局部变量,而不去引用全局变量)

c语言局部变量可以被其他的原文件引用吗

python引用局部变量之nonlocal

返回指向局部变量的指针或引用

分配对局部变量的引用,如果局部变量超出范围,它会超出范围吗?

c语言局部变量可以被其他的原文件引用吗