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
処理系
- Clang: 6.0 ✅
- GCC: 9 ✅
- Visual C++: 2019 ✅