在 C++ 中确定表达式是右值还是左值的最佳方法是什么?可能,这在实践中没有用,但由于我正在学习右值和左值,我认为如果传入的表达式是左值则返回 true 否则返回 false 的函数 is_lvalue
会很好。
例子:
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&
或 const std::string&
,对于右值,它将推导出为 std::string
请注意 Yakk's answer将返回一个不同的类型,这样可以提供更大的灵 active ,您应该阅读该答案并可能改用它。
https://stackoverflow.com/questions/36296425/