在 C++ 中确定表达式是右值还是左值的最佳方法是什么?也许,这在实践中没有用,但由于我正在学习右值和左值,我认为有一个函数会很好is_lvalue
如果传入输入的表达式是左值,则返回 true,否则返回 false。
Example:
std::string a("Hello");
is_lvalue(std::string()); // false
is_lvalue(a); // true
大部分工作已经由 stdlib 为您完成,您只需要一个函数包装器:
template <typename T>
constexpr bool is_lvalue(T&&) {
return std::is_lvalue_reference<T>{};
}
如果你通过了std::string
那么左值T
将推导出std::string&
or const std::string&
,对于右值,它将推论为std::string
注意雅克的回答 https://stackoverflow.com/a/36312021/1013719将返回不同的类型,这允许更大的灵活性,您应该阅读该答案并可能使用它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)