다음을 통해 공유


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_volatileadd_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

참고 항목

<type_traits>
remove_const 클래스
remove_volatile 클래스