C++11 中的每个表达式都有一个值类别。lvalue、xvalue 或 prvalue 之一。
有没有办法编写一个宏,给定任何表达式作为参数,将产生适当的字符串“lvalue”、“xvalue”或“prvalue”?
例如:
int main()
{
int x;
cout << VALUE_CAT(x) << endl; // prints lvalue
cout << VALUE_CAT(move(x)) << endl; // prints xvalue
cout << VALUE_CAT(42) << endl; // prints prvalue
}
怎么可能VALUE_CAT
实施?