【发布时间】:2019-06-16 13:18:20
【问题描述】:
据我所知,C++ 标准不区分右值引用和转发引用。
我想知道这背后的原因。
如果我想编写一个只接受左值表达式的模板函数,请执行以下操作:
template<typename T>
void func(T& param);
但是如果我想写一个只接受右值表达式的模板函数:
template<typename T>
void func(T&& param);
原来这个函数也接受左值表达式。
所以问题是:这种语言设计背后的逻辑是什么?
【问题讨论】:
标签: c++ templates forwarding-reference value-categories