add_cv, classe
Rend const volatile
le type à partir du type.
Syntaxe
template <class T>
struct add_cv;
template <class T>
using add_cv_t = typename add_cv<T>::type;
Paramètres
T
Type à modifier.
Notes
Une instance du type add_cv<T>
modifié a un type
membre typedef
équivalent à T modifié par add_volatile et add_const, sauf si T a déjà les qualificateurs cv, est une référence ou est une fonction.
Le type d’assistance add_cv_t<T>
est un raccourci pour accéder au typedef de membre de add_cv<T>
type
.
Exemple
// 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()
Spécifications
Header :<type_traits>
Espace de noms : std
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour