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