最終更新日時:
が更新

履歴 編集

class template
<type_traits>

std::add_lvalue_reference(C++11)

namespace std {
  template <class T>
  struct add_lvalue_reference {
    using type = ;
  };

  template <class T>
  using add_lvalue_reference_t = typename add_lvalue_reference<T>::type; // C++14
}

概要

型に左辺値参照を追加する。

効果

add_lvalue_referenceは、型Tの名前に&修飾を付加した型を、メンバ型typeとして定義する。
Tが何らかのオブジェクト型もしくは関数型Uへの左辺値参照型である場合は、型U&をメンバ型typeとして定義する。
Tが何らかのオブジェクト型もしくは関数型Uへの右辺値参照型である場合は、型U&をメンバ型typeとして定義する。

#include <type_traits>

static_assert(std::is_same<std::add_lvalue_reference<int>::type, int&>::value, "transform int to int&");
static_assert(std::is_same<std::add_lvalue_reference<int&>::type, int&>::value, "transform int& to int&");
static_assert(std::is_same<std::add_lvalue_reference<int&&>::type, int&>::value, "transform int&& to int&");

int main() {}

出力

バージョン

言語

  • C++11

処理系

  • Clang: 3.0
  • GCC, C++11 mode: 4.3.6
  • Visual C++: 10.0, 11.0, 12.0, 14.0
    • 9.0には、名前空間std::tr1に同じ効果のadd_referenceが存在する。これは提案時の名前である。
    • 10.0~12.0にも、名前空間stdおよびstd::tr1add_referenceが存在する。
    • add_lvalue_reference_tは12.0から

参照