Maison >développement back-end >C++ >Pourquoi les conteneurs C ne peuvent-ils pas contenir de types incomplets ?
Pourquoi les types incomplets sont interdits dans les conteneurs C
Question :
Pourquoi le C la norme interdit aux conteneurs de types incomplets d'être instancié ?
Réponse :
La décision du comité de normalisation C à cet égard découlait de raisons historiques.
Les tests initiaux ont révélé que même de simples exemples de conteneurs avec des types incomplets ne fonctionnaient pas de manière cohérente dans toutes les implémentations STL. Ce manque de clarté a conduit le comité à déclarer que le fonctionnement des conteneurs STL avec des types incomplets était un comportement indéfini, étendant cette interdiction au reste de la bibliothèque standard.
Cette décision a été prise pour éviter d'invalider les implémentations de bibliothèques existantes qui le faisaient. ne prend pas en charge les types incomplets de manière rétroactive.
Malgré l'interdiction initiale, Matt Austern, président du groupe de travail sur la bibliothèque du comité, a reconnu la possibilité d'assouplir cette restriction dans le futur C révisions.
Bien que l'interdiction soit toujours en vigueur dans la norme actuelle, boost::container démontre la faisabilité des conteneurs qui autorisent les types incomplets, offrant une solution pour les situations où cela est souhaité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!