web-dev-qa-db-fra.com

Pourquoi std :: is_pod est-il déconseillé en C ++ 20?

std::is_pod sera probablement obsolète en C++ 20.
Quelle est la raison de ce choix? Que devrais-je utiliser à la place de std::is_pod savoir si un type est réellement un POD?

64
skypjack

POD est remplacé par deux catégories qui donnent plus de nuances. Le réunion standard de c ++ en novembre 2017 avait ceci à dire à ce sujet:

Déprécier la notion de "données anciennes lisses" (POD). Il a été remplacé par deux catégories de types plus nuancées, “trivial” et “standard-layout”. "POD" équivaut à "une présentation triviale et standard", mais pour de nombreux modèles de code, une restriction plus étroite à la définition "simple" ou à une "présentation standard" est appropriée. pour encourager une telle précision, la notion de "POD" était donc déconseillée. Le trait de bibliothèque is_pod a également été déconseillé.

Pour les types de données simples, utilisez is_standard_layout fonction, pour les types de données triviaux (tels que les structures simples), utilisez is_trivial fonction.

48
D.J. Klomp