c++11 - 引用折叠规则是否适用于返回类型?

标签 c++11 rvalue-reference type-deduction forwarding-reference

std::forward 函数模板返回 T&&。因此,为了将其参数作为左值引用或右值引用转发,std::forward 的返回类型必须是:

T&& if T is a non-reference type (T && == T&&)
T& if T is an lvalue reference type (T& && == T&)

我的意思是 std::forward 的返回类型是否由于引用折叠规则而改变或者解释不同?

std::forward 的返回类型是转发(通用)引用吗?

最佳答案

答案是肯定的。引用折叠规则,如[dec.ref]/6中所述,不要区分变量的类型、函数参数的类型或函数的返回类型。

关于c++11 - 引用折叠规则是否适用于返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57420581/

相关文章:

templates - 用于模板化重载的不明确运算符<<

c++ - 在创建 std::tuple 时从 const char* 或 char* 推导 std::string

foreach - 即使给出了类型,dmd 也无法推断类型

c++ - 使用 std::move 返回时 "return-by-rvalue-ref"和 "return-by-value"之间的区别?

haskell - Haskell中自动函数约束推导的类型约束

c++ - 使用 const CString& 而不是单独使用 CString 作为函数参数是否有任何性能优势?

c++ - 如何在迭代时从集合中删除相邻条目

c++ - 重新检查时指针属性发生变化

c++ - 为什么 xvalue 不绑定(bind)到非常量左值引用?

c++ - 为什么我需要在 move 构造函数的初始化列表中使用 std::move?