Je n'arrive pas à exprimer une idée avec des templates : j'aimerais
qu'un template soit paramétré par un type conteneur et un type contenu.
Voici le genre de code que j'aurais voulu écrire :
int i = 2, j = 3;
pair<list> entiers = pair<list>(i ,j);
Mais la compilation échoue :
list_of.cpp:2: error: 'Container_T' is not a template
list_of.cpp: In function 'Container_T pair(Content_T, Content_T)':
list_of.cpp:4: error: 'Container_T' is not a template
Et je ne sais pas comment indiquer que le type Container_T est lui-même
un template à un argument...
Curieusement,
Nowhere man
--
nowhere.man@levallois.eu.org
OpenPGP 0xD9D50D8A
Le Wed, 14 Jun 2006 18:38:38 +0200, Pierre THIERRY a écrit :
ainsi, j'aurais pu écrire :
int i = 2, j = 3; pair<list> entiers = pair<list>(i ,j);
Pardon, ça devrait être :
list<int> entiers = pair<list>(i ,j);
L'intérêt étant que je peux changer de type avec un typedef plus haut :
typedef list container;
container<int> entiers = pair<container>(i ,j);
Correctivement, Nowhere man --
OpenPGP 0xD9D50D8A
Marc Duflot
Pierre THIERRY wrote:
Je n'arrive pas à exprimer une idée avec des templates : j'aimerais qu'un template soit paramétré par un type conteneur et un type contenu. Voici le genre de code que j'aurais voulu écrire :
int i = 2, j = 3; pair<list> entiers = pair<list>(i ,j);
Mais la compilation échoue :
list_of.cpp:2: error: 'Container_T' is not a template list_of.cpp: In function 'Container_T pair(Content_T, Content_T)': list_of.cpp:4: error: 'Container_T' is not a template
Et je ne sais pas comment indiquer que le type Container_T est lui-même un template à un argument...
int main() { int i = 2, j = 3; std::list<int> entiers = pair<int, std::list>(i ,j); }
Pierre THIERRY wrote:
Je n'arrive pas à exprimer une idée avec des templates : j'aimerais
qu'un template soit paramétré par un type conteneur et un type contenu.
Voici le genre de code que j'aurais voulu écrire :
int i = 2, j = 3;
pair<list> entiers = pair<list>(i ,j);
Mais la compilation échoue :
list_of.cpp:2: error: 'Container_T' is not a template
list_of.cpp: In function 'Container_T pair(Content_T, Content_T)':
list_of.cpp:4: error: 'Container_T' is not a template
Et je ne sais pas comment indiquer que le type Container_T est lui-même
un template à un argument...
Je n'arrive pas à exprimer une idée avec des templates : j'aimerais qu'un template soit paramétré par un type conteneur et un type contenu. Voici le genre de code que j'aurais voulu écrire :
int i = 2, j = 3; pair<list> entiers = pair<list>(i ,j);
Mais la compilation échoue :
list_of.cpp:2: error: 'Container_T' is not a template list_of.cpp: In function 'Container_T pair(Content_T, Content_T)': list_of.cpp:4: error: 'Container_T' is not a template
Et je ne sais pas comment indiquer que le type Container_T est lui-même un template à un argument...
int main() { int i = 2, j = 3; std::list<int> entiers = pair<int, std::list>(i ,j); }
Sylvain Togni
Je n'arrive pas à exprimer une idée avec des templates : j'aimerais qu'un template soit paramétré par un type conteneur et un type contenu. Voici le genre de code que j'aurais voulu écrire :
Je n'arrive pas à exprimer une idée avec des templates : j'aimerais
qu'un template soit paramétré par un type conteneur et un type contenu.
Voici le genre de code que j'aurais voulu écrire :
Je n'arrive pas à exprimer une idée avec des templates : j'aimerais qu'un template soit paramétré par un type conteneur et un type contenu. Voici le genre de code que j'aurais voulu écrire :
int main() { int i = 2, j = 3; std::list<int> entiers = pair<int, std::list>(i ,j); }
Je ne suis pas sur que ce code soit valide. std::list est une classe template avec deux paramètres template, dont un paramètre template par défaut -- c'est néanmoins bel et bien une classe template à deux arguments template.
Or, on ne peut pas faire passer une std::list pour une classe template à un argument template comme c'est le cas pour pair.
g++ l'accepte, mais plus pour longtemps. 4.2 devrait l'évincer si j'en crois http://gcc.gnu.org/gcc-4.2/changes.html
int main() {
int i = 2, j = 3;
std::list<int> entiers = pair<int, std::list>(i ,j);
}
Je ne suis pas sur que ce code soit valide. std::list est une classe
template avec deux paramètres template, dont un paramètre template
par défaut -- c'est néanmoins bel et bien une classe template à deux
arguments template.
Or, on ne peut pas faire passer une std::list pour une classe template
à un argument template comme c'est le cas pour pair.
g++ l'accepte, mais plus pour longtemps. 4.2 devrait l'évincer si j'en
crois http://gcc.gnu.org/gcc-4.2/changes.html
int main() { int i = 2, j = 3; std::list<int> entiers = pair<int, std::list>(i ,j); }
Je ne suis pas sur que ce code soit valide. std::list est une classe template avec deux paramètres template, dont un paramètre template par défaut -- c'est néanmoins bel et bien une classe template à deux arguments template.
Or, on ne peut pas faire passer une std::list pour une classe template à un argument template comme c'est le cas pour pair.
g++ l'accepte, mais plus pour longtemps. 4.2 devrait l'évincer si j'en crois http://gcc.gnu.org/gcc-4.2/changes.html