据我所知,C ++标准并未区分右值引用和转发引用。
我想知道其背后的原因。
如果我想编写仅接受左值表达式的模板函数,请执行以下操作:
/{image}
但是,如果我要编写仅接受右值表达式的模板函数:
template<typename T>
void func(T& param);
事实证明,此函数还接受左值表达式。
问题是:这种语言设计背后的逻辑是什么?
答案 0 :(得分:0)
它也被称为通用参考书。
顾名思义,它是一个通用引用,允许使用许多不同的类型。
如果希望它保留r值参考(T &&),请使用std:forward<T>(param)
,否则请确保将其传递给使用它的位置时,它是您想要的类型。 / p>