OVH Cloud OVH Cloud

type_info

15 réponses
Avatar
Christophe de VIENNE
Bonjour,

J'ai une petite question sur type_info.

Version courte : Est-il sûr de conserver un pointeur sur un type_info ?

Version un chouilla plus longue :
Je souhaite faire une map dont la clé est un type.
J'ai le choix entre :
std::map< type_info const *, mon_type_foncteur > m_table;
et
std::map< std::string, mon_type_foncteur > m_table;

Dans le second cas, j'indexerais type_info.name.
Je préfère la première alternative, mais est-elle valable ?


Merci

Christophe

--
Christophe de Vienne

5 réponses

1 2
Avatar
drkm
writes:

Il y a eu une proposition pour normaliser le contenu de name(). Il n'a
pas passé, pour de diverses raisons, mais si j'étais un implémenteur,
c'est certainement sur cette proposition que je me baserais. Seulement,
l'opposition à la proposition venait en fait des implémenteurs.


Quelles étaient leurs raisons ?

--drkm, en recherche d'un stage : http://www.fgeorges.org/ipl/stage.html

Avatar
Gabriel Dos Reis
writes:

[...]

| Il y a eu une proposition pour normaliser le contenu de name(). Il n'a
| pas passé, pour de diverses raisons, mais si j'étais un implémenteur,
| c'est certainement sur cette proposition que je me baserais. Seulement,

C'est probablement ça la différence : tu n'es pas implémenteur ;-p

| l'opposition à la proposition venait en fait des implémenteurs.

-- Gaby
Avatar
kanze
drkm wrote in message
news:...
writes:

Il y a eu une proposition pour normaliser le contenu de name(). Il
n'a pas passé, pour de diverses raisons, mais si j'étais un
implémenteur, c'est certainement sur cette proposition que je me
baserais. Seulement, l'opposition à la proposition venait en fait
des implémenteurs.


Quelles étaient leurs raisons ?


Je ne me rappelle plus ; je n'ai pas suivi la discussion de près.

Si je me rappelle bien (mais ça fait un moment - ce n'est pas sûr), je
crois que c'était Bill Gibson (alors chez Taligent) qui était l'auteur
de la proposition. Et j'ai un très, très vague souvenir que l'oposition
venait de Borland, parmi d'autres. Si Gabi a accès à l'historique, et
qu'il a le temps d'y chercher, peut-être il pourrait nous le dire.

La seule idée qui me vient à l'esprit, c'est qu'on n'avait pas encore
assez d'expérience pour être sûr ce qu'il fallait. Il me semble qu'à
l'époque, par exemple, il y a eu de discussion s'il ne fallait peut-être
pas que le résultat soit quelque chose de compilable. Mais je ne suis
pas sûr du tout.

Dans le cas de Borland, je crois aussi qu'une partie de l'oposition
venait du fait qu'ils l'avaient déjà implémenté, et qu'il ne voulait pas
changer leur implémentation.

Mais il faudrait vraiment chercher dans les archives pour être sûr.

--
James Kanze GABI Software http://www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Avatar
Falk Tannhäuser
wrote:

drkm wrote in message

writes:

Il y a eu une proposition pour normaliser le contenu de name(). Il
n'a pas passé, pour de diverses raisons, mais si j'étais un
implémenteur, c'est certainement sur cette proposition que je me
baserais. Seulement, l'opposition à la proposition venait en fait
des implémenteurs.


Quelles étaient leurs raisons ?


[snip]

La seule idée qui me vient à l'esprit, c'est qu'on n'avait pas encore
assez d'expérience pour être sûr ce qu'il fallait. Il me semble qu'à
l'époque, par exemple, il y a eu de discussion s'il ne fallait peut-être
pas que le résultat soit quelque chose de compilable. Mais je ne suis
pas sûr du tout.


Il n'y avait pas une proposition d'avoir deux fonctions membres
au lieu de 'name()' dans 'std::type_info' - une qui peut renvoyer
un nom abrégé / manglé puis une qui renvoie un nom lisible ?

Ceci dit, même si on avait une chaîne de caractères unique par
type, l'utilisation de 'before()' pour comparer les clefs dans
une 'std::map' me semble préférable à la comparaison des noms,
pour des raisons de performance.

Falk



Avatar
kanze
Falk Tannhäuser wrote in message
news:<cg4eoo$44g$...

[...]
Il n'y avait pas une proposition d'avoir deux fonctions membres au
lieu de 'name()' dans 'std::type_info' - une qui peut renvoyer un nom
abrégé / manglé puis une qui renvoie un nom lisible ?


Je n'en ai pas entendu parler, mais il y a beaucoup qui se passe dont je
n'entends pas parler.

Ceci dit, même si on avait une chaîne de caractères unique par type,
l'utilisation de 'before()' pour comparer les clefs dans une
'std::map' me semble préférable à la comparaison des noms, pour des
raisons de performance.


Certainement. L'intérêt d'un name() standardisé, c'est de pouvoir
l'utiliser comme identifiant dans des fichiers ou dans les flux.

--
James Kanze GABI Software http://www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34

1 2