Question

Je suis pleinement conscient que la valeur de retour de std::type_info::name() est défini par l'implémentation.

A partir de la norme C ++ (ISO / IEC 14882: 2003 §18.5.1.7):

  

: retour. un BNT défini de mise en œuvre-

Ma question est: pourquoi? Ne serait-pas cette fonction de membre beaucoup plus utile si la norme dicte ce que la valeur de retour doit être?

Était-ce utile?

La solution

En fait, si une mise en œuvre décide qu'ils ne peuvent pas ou ne veulent pas soutenir RTTI, ils peuvent tout simplement return "";. Si la norme a forcé à retourner quelque chose, ils avaient peut-être tuer toute possibilité d'avoir un compilateur compatible pour un environnement où les ressources pour RTTI n'existent pas ou veulent être désactivé (une puce électronique, par exemple).

Et ne l'oublions pas, nous ne voulons pas forcer un système ABI / nom-mutiler sur les compilateurs.

Cela fait suite à la C ++ philosophie « Vous ne payez pas pour des choses que vous n'avez pas besoin. »

Autres conseils

Si nous parlons des vendeurs de retour des chaînes différentes, je pense qu'il est juste un « nous le faisons de cette façon, vous changez » « non, nous le faisons de cette façon, vous changez » chose entre les fournisseurs de compilateur. Même le comité de normalisation ne veut pas embêter les équipes du compilateur, et la création d'une norme neutre, nouvelle qui est pas employé par un vendeur a tendance à quelque chose moyen de conclusion qui est absurde de toute façon.

Pourquoi sont-ils pas tous les espaces de noms évidents :: classe :: fonctions etc. déjà? Certaines implémentations actuelles peuvent avoir historiquement trouvé commode de l'avoir correspondent aux noms déchiquetés linker requis, été paranoïaque (ou avait des clients paranoïaques) re utilisation de la mémoire etc ..

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top