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
に実装できますか?