112 votes

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

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

3 votes

Pourquoi voulez-vous savoir si un type est POD ?

12 votes

@MarcGlisse Une question sur les changements dans la norme ou un trait comme celui-ci ne signifie pas nécessairement que je veux utiliser cette fonctionnalité. J'ai trouvé le déprécié J'ai trouvé cette note en cherchant sur Google et j'étais simplement curieux de savoir pourquoi elle était dépréciée.

90voto

D.J. Klomp Points 1533

Le POD est remplacé par deux catégories qui apportent plus de nuances. Le site Réunion du standard c++ en novembre 2017 a dit ceci à ce sujet :

Dépréciation de la notion de "plain old data" (POD). Elle a été remplacée par deux catégories de types plus nuancées, "trivial" et "standard-layout". "POD" est équivalent à "trivial et standard-layout", mais pour de nombreux modèles de code, une restriction plus étroite à seulement "trivial" ou seulement "standard-layout" est appropriée ; pour encourager une telle précision, la notion de "POD" a donc été dépréciée. Le trait de bibliothèque is_pod a également été déprécié en conséquence.

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

5 votes

Ainsi, ils ajoutent remove_cvref d'un côté, c'est un trait composé, tandis que de l'autre côté, ils suppriment d'autres traits composés ? Cela semble insensé. :-)

2 votes

On pourrait dire que le terme pod est trompeur ou souvent mal utilisé.

10 votes

Il semble que ce soit trivial ET une disposition standard ET une clause impliquant d'être récursivement POD. La clause récursive est-elle redondante ? En d'autres termes, est-il garanti que std::is_pod<T>{} == (std::is_trivial<T>{} && std::is_standard_layout<T>{}) ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X