OVH Cloud OVH Cloud

const_iterator et erase

5 réponses
Avatar
Loïc Joly
La déclaration d'une fonction erase d'un conteneur ressemble à ça :

iterator erase(iterator position);

Je me demande pourquoi elle n'est pas plutôt :

iterator erase(const_iterator position);

En effet, ce qui me semble significatif pour savoir si l'on peut
effectuer l'opération est la constance de this, pas celle de l'itérateur
qui indique la position à effacer. Et dans ce cas, autant être le moins
restrictif possible par rapport au type d'itérateur.

Même raisonnement pour insert, d'ailleur.


Est-ce que mon raisonnement a un défaut ? Et si non, a-t-il déjà été
présenté dans les defect reports ?

Cordialement,

--
Loïc

5 réponses

Avatar
Gabriel Dos Reis
Loïc Joly writes:

| La déclaration d'une fonction erase d'un conteneur ressemble à ça :
|
| iterator erase(iterator position);
|
| Je me demande pourquoi elle n'est pas plutôt :
|
| iterator erase(const_iterator position);

C'est un LWG DR bien connu.

-- Gaby
Avatar
Loïc Joly
Gabriel Dos Reis wrote:

Loïc Joly writes:

| La déclaration d'une fonction erase d'un conteneur ressemble à ça :
|
| iterator erase(iterator position);
|
| Je me demande pourquoi elle n'est pas plutôt :
|
| iterator erase(const_iterator position);

C'est un LWG DR bien connu.


Ah, ça y est, je l'ai vu. C'est le n°108.

Par contre, c'est estampillé NAD et Future... :(

Donc il faudra attendre longtemps avant que ce soit corrigé, dommage.

--
Loïc

Avatar
Gabriel Dos Reis
Loïc Joly writes:

| Gabriel Dos Reis wrote:
|
| > Loïc Joly writes:
| > | La déclaration d'une fonction erase d'un conteneur ressemble à ça :
| > | | iterator erase(iterator position);
| > | | Je me demande pourquoi elle n'est pas plutôt :
| > | | iterator erase(const_iterator position);
| > C'est un LWG DR bien connu.
|
| Ah, ça y est, je l'ai vu. C'est le n°108.
|
| Par contre, c'est estampillé NAD et Future... :(

tu sais bien que ça peut bien dire tout et n'importe quoi...

| Donc il faudra attendre longtemps avant que ce soit corrigé, dommage.

sauf si quelqu'un écrit un papier...

-- Gaby
Avatar
kanze
Gabriel Dos Reis wrote:
Loïc Joly writes:


[...]
| Par contre, c'est estampillé NAD et Future... :(

tu sais bien que ça peut bien dire tout et n'importe quoi...

| Donc il faudra attendre longtemps avant que ce soit corrigé,
| dommage.

sauf si quelqu'un écrit un papier...


Même si quelqu'un écrit un papier, il faut que le papier soit
discuté, qu'il soit adopté, que la nouvelle norme soit
promoluguée, et qu'enfin, les implémenteurs l'implémentent. Or,
les trois premiers démarches peuvent bien avoir besoin de cinq
ans, je crois. Et la dernière... on voit avec export.

En somme, même si le papier était présenté dans la prochaine
réunion, je serais à la retraite avant de pouvoir utiliser la
modification:-).

--
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
Gabriel Dos Reis
writes:

| Gabriel Dos Reis wrote:
| > Loïc Joly writes:
|
| [...]
| > | Par contre, c'est estampillé NAD et Future... :(
|
| > tu sais bien que ça peut bien dire tout et n'importe quoi...
|
| > | Donc il faudra attendre longtemps avant que ce soit corrigé,
| > | dommage.
|
| > sauf si quelqu'un écrit un papier...
|
| Même si quelqu'un écrit un papier, il faut que le papier soit
| discuté, qu'il soit adopté, que la nouvelle norme soit
| promoluguée, et qu'enfin, les implémenteurs l'implémentent. Or,
| les trois premiers démarches peuvent bien avoir besoin de cinq
| ans, je crois. Et la dernière... on voit avec export.

Ou tu peux voir ce qui arrive à TC1. Tout n'est pas noir ou blanc.

| En somme, même si le papier était présenté dans la prochaine
| réunion, je serais à la retraite avant de pouvoir utiliser la
| modification:-).

Oui mais Loïc et jeune et la communauté C++ n'est pas réduite à ta
personne :-)

-- Gaby