最終更新日時(UTC):
が更新

履歴 編集

class template
<type_traits>

std::remove_cvref(C++20)

namespace std {
  template <class T>
  struct remove_cvref {
    using type = remove_cv_t<remove_reference_t<T>>;
  };

  template <class T>
  using remove_cvref_t = typename remove_cvref<T>::type;
}

概要

型のconst-volatile修飾と参照を除去する。

効果

remove_cvrefは、型Tに含まれる最上位のconst-volatile修飾と、左辺値参照、右辺値参照を除去した型を、メンバ型typeとして定義する。

#include <type_traits>

static_assert(std::is_same<
  std::remove_cvref<const int&>::type,
  int
>{});

static_assert(std::is_same<
  std::remove_cvref_t<volatile int&&>,
  int
>{});

int main() {}

出力

バージョン

言語

  • C++20

処理系

参照