Bonjour, je me pose une question quand à l'utilisation de std::iterator dans
l'implémentation de la STL. Je pense qu'il est raisonnable que tous les
iterator de la STL soient des sous-classes de std::iterator. Ce qui me permet
d'écrire des choses comme :
et d'utiliser cela avec std::vector, std::set, ...
Maintenant, je lis
A Proposal to Add a Fixed Size Array Wrapper to the Standard Library
Technical Report
http://www.open-std.org/jtc1/sc22/WG21/docs/papers/2003/n1479.html
et en gras
typedef implementation defined iterator;
// See lib.container.requirements
typedef implementation defined const_iterator;
et évidemment le lien "See lib.container.requirements" en commentaire ne
fonctionne pas, ce qui me fait me poser des questions.
Ce qui m'inquiète, c'est l'implémentation que fournit gcc-4.0
libstdc++-v3/include/tr1/array
avec une telle définition, mon code ne fonctionne plus. Je sais que gcc
fournit une implémentation expérimental, mais serait-elle légale ? Si oui,
pourquoi est-elle permise puisqu'apparemment elle rendrait std:array
incompatible avec ses les autres conteneurs de la STL ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Gabriel Dos Reis
Benoît Dejean writes:
| Bonjour, je me pose une question quand à l'utilisation de std::iterator dans | l'implémentation de la STL. Je pense qu'il est raisonnable que tous les | iterator de la STL soient des sous-classes de std::iterator. Ce qui me permet | d'écrire des choses comme :
C'est une hypothèse raisonnable, mais en pratique non-universellement vérifiée.
Rien n'interdit à std::vector<T>::iterator d'être un T*. Utilise std::iterator_traits<>.
-- Gaby
Benoît Dejean <tazforever@free.fr> writes:
| Bonjour, je me pose une question quand à l'utilisation de std::iterator dans
| l'implémentation de la STL. Je pense qu'il est raisonnable que tous les
| iterator de la STL soient des sous-classes de std::iterator. Ce qui me permet
| d'écrire des choses comme :
C'est une hypothèse raisonnable, mais en pratique non-universellement
vérifiée.
| Bonjour, je me pose une question quand à l'utilisation de std::iterator dans | l'implémentation de la STL. Je pense qu'il est raisonnable que tous les | iterator de la STL soient des sous-classes de std::iterator. Ce qui me permet | d'écrire des choses comme :
C'est une hypothèse raisonnable, mais en pratique non-universellement vérifiée.
Le Sun, 24 Apr 2005 07:31:49 -0500, Gabriel Dos Reis a écrit :
Benoît Dejean writes:
Rien n'interdit à std::vector<T>::iterator d'être un T*. Utilise std::iterator_traits<>.
Merci, est-ce que je peux en conclure que je dois utiliser std::iterator_traits<> systématiquement ?
Gabriel Dos Reis
Benoît Dejean writes:
| Le Sun, 24 Apr 2005 07:31:49 -0500, Gabriel Dos Reis a écrit : | | > Benoît Dejean writes: | | > Rien n'interdit à std::vector<T>::iterator d'être un T*. | > Utilise std::iterator_traits<>. | | Merci, est-ce que je peux en conclure que je dois utiliser | std::iterator_traits<> systématiquement ?
Pour ce gence de choses, il est plus fiable que la notation i::value_type.
-- Gaby
Benoît Dejean <tazforever@free.fr> writes:
| Le Sun, 24 Apr 2005 07:31:49 -0500, Gabriel Dos Reis a écrit :
|
| > Benoît Dejean <tazforever@free.fr> writes:
|
| > Rien n'interdit à std::vector<T>::iterator d'être un T*.
| > Utilise std::iterator_traits<>.
|
| Merci, est-ce que je peux en conclure que je dois utiliser
| std::iterator_traits<> systématiquement ?
Pour ce gence de choses, il est plus fiable que la notation
i::value_type.
| Le Sun, 24 Apr 2005 07:31:49 -0500, Gabriel Dos Reis a écrit : | | > Benoît Dejean writes: | | > Rien n'interdit à std::vector<T>::iterator d'être un T*. | > Utilise std::iterator_traits<>. | | Merci, est-ce que je peux en conclure que je dois utiliser | std::iterator_traits<> systématiquement ?
Pour ce gence de choses, il est plus fiable que la notation i::value_type.