C++11のvalue category(lvalue/xvalue/prvalue)判別マクロ。本記事の内容はStack Overflowで見つけた質問と回答に基づく。
template<typename T> struct value_category { static constexpr auto value = "prvalue"; }; template<typename T> struct value_category<T&> { static constexpr auto value = "lvalue"; }; template<typename T> struct value_category<T&&> { static constexpr auto value = "xvalue"; }; #define VALUE_CATEGORY(expr) value_category<decltype((expr))>::value
関連URL