yohhoyの日記

技術的メモをしていきたい日記

value category判別

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