2023年8月13日,周日早上
#include <iostream>// 函数模板,根据参数类型判断是左值还是右值
template<typename T>
void checkValueType(T&& arg)
{if constexpr(std::is_lvalue_reference<T>())std::cout << "Expression is an lvalue." << std::endl;elsestd::cout << "Expression is an rvalue." << std::endl;
}int main()
{int x = 42;const int& y = x;checkValueType(++x); // x 是左值checkValueType(y); // y 是左值checkValueType(42); // 42 是右值checkValueType(x + y); // x + y 是右值return 0;
}