据我所知,C++ 标准不区分右值引用和转发引用。
我想知道这背后的原因。
如果我想编写一个只接受左值表达式的模板函数,请执行以下操作:
template<typename T>
void func(T& param);
但是如果我想写一个只接受右值表达式的模板函数:
template<typename T>
void func(T&& param);
事实证明,这个函数也接受左值表达式。
那么问题来了:这种语言设计背后的逻辑是什么?
据我所知,C++ 标准不区分右值引用和转发引用。
我想知道这背后的原因。
如果我想编写一个只接受左值表达式的模板函数,请执行以下操作:
template<typename T>
void func(T& param);
但是如果我想写一个只接受右值表达式的模板函数:
template<typename T>
void func(T&& param);
事实证明,这个函数也接受左值表达式。
那么问题来了:这种语言设计背后的逻辑是什么?