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;
else
std::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;
}