add_cv 클래스
형식에서 형식을 만듭니다 const volatile
.
구문
template <class T>
struct add_cv;
template <class T>
using add_cv_t = typename add_cv<T>::type;
매개 변수
T
수정할 형식입니다.
설명
수정된 형식 add_cv<T>
의 인스턴스에는 type
T에 cv 한정자, 참조 또는 함수가 없는 한 add_volatile 및 add_const 모두에 의해 수정된 T와 동일한 멤버 typedef
가 있습니다.
add_cv_t<T>
도우미 형식은 add_cv<T>
멤버 typedef type
에 액세스하기 위한 바로 가기입니다.
예시
// add_cv.cpp
// compile by using: cl /EHsc /W4 add_cv.cpp
#include <type_traits>
#include <iostream>
struct S {
void f() {
std::cout << "invoked non-cv-qualified S.f()" << std::endl;
}
void f() const {
std::cout << "invoked const S.f()" << std::endl;
}
void f() volatile {
std::cout << "invoked volatile S.f()" << std::endl;
}
void f() const volatile {
std::cout << "invoked const volatile S.f()" << std::endl;
}
};
template <class T>
void invoke() {
T t;
((T *)&t)->f();
}
int main()
{
invoke<S>();
invoke<std::add_const<S>::type>();
invoke<std::add_volatile<S>::type>();
invoke<std::add_cv<S>::type>();
}
invoked non-cv-qualified S.f()
invoked const S.f()
invoked volatile S.f()
invoked const volatile S.f()
요구 사항
헤더:<type_traits>
네임스페이스: std