Aracılığıyla paylaş


add_cv Sınıfı

Türü türünden yapar const volatile .

Sözdizimi

template <class T>
struct add_cv;

template <class T>
using add_cv_t = typename add_cv<T>::type;

Parametreler

T
Değiştirilecek tür.

Açıklamalar

Değiştirilen türün add_cv<T> bir örneğinde, T'nin type cv niteleyicileri yoksa, başvuru veya işlev değilse, hem add_volatile hem de add_const tarafından değiştirilen T ile eşdeğer bir üye typedef vardır.

add_cv_t<T> Yardımcı türü, üye typedef typeöğesine erişmek add_cv<T> için bir kısayoldur.

Örnek

// 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()

Gereksinimler

Üst Bilgi:<type_traits>

Ad alanı: std

Ayrıca bkz.

<type_traits>
remove_const Sınıfı
remove_volatile Sınıfı