is_pod, classe
Teste si le type est POD.
Syntaxe
template <class T>
struct is_pod;
Paramètres
T
Type à interroger.
Notes
is_pod<T>::value
est true
si le type T est Plain Old Data (POD). Sinon, il est false
.
Les types arithmétiques, les types énumération, les types pointeur et les pointeurs vers des types de membres sont des types POD.
Une version cv-qualified d'un type POD est elle-même un type POD.
Un tableau de POD est lui-même POD.
Une structure ou une union, dont tous les membres de données non statiques sont POD, est elle-même POD si elle n'a :
aucun constructeur déclaré par l'utilisateur ;
aucun membre de données non statiques privé ou protégé ;
aucune classe de base ;
aucune fonction virtuelle ;
aucun membre de données non statiques de type référence ;
aucun opérateur d'assignation de copie défini par l'utilisateur ;
aucun destructeur défini par l'utilisateur.
Par conséquent, vous pouvez générer de manière récursive des structs et des tableaux POD qui contiennent des structs et des tableaux POD.
Exemple
// std__type_traits__is_pod.cpp
// compile with: /EHsc
#include <type_traits>
#include <iostream>
struct trivial {
int val;
};
struct throws {
throws() {} // User-declared ctor, so not POD
int val;
};
int main() {
std::cout << "is_pod<trivial> == " << std::boolalpha
<< std::is_pod<trivial>::value << std::endl;
std::cout << "is_pod<int> == " << std::boolalpha
<< std::is_pod<int>::value << std::endl;
std::cout << "is_pod<throws> == " << std::boolalpha
<< std::is_pod<throws>::value << std::endl;
return (0);
}
is_pod<trivial> == true
is_pod<int> == true
is_pod<throws> == false
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