template et class par defaut dans l'argumentation d'un template.
2 réponses
Stephane Wirtel
Je viens de regarder un exemple de code dans un livre expliquant le
fonctionnement de chaque classe de la STL, et j'ai voulu tester la
possibilité de déclarer par défaut une classe lors de la déclaration de la
template.
Est-ce que cela pourrait fonctionner avec un autre compilateur, ou est-ce
une faute de ma part au niveau de la déclaration du template ?
template <class A, class container=vector<A> > class test
{
public:
test() {
cout << "A : " << typeid(A).name << endl;
cout << "container : " << typeid (container).name << endl;
}
};
int main (int argc, char **argv)
{
return 0;
}
bash-2.05b$
Voici l'erreur de compilation
bash-2.05b$ g++ template.cc -o template
template.cc: In constructor `test<A, container>::test()':
template.cc:12: internal compiler error: in resolve_overloaded_unification, at cc1plus/../../../../contrib/gcc/cp/pt.c:9235
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
bash-2.05b$
| Je viens de regarder un exemple de code dans un livre expliquant le | fonctionnement de chaque classe de la STL, et j'ai voulu tester la | possibilité de déclarer par défaut une classe lors de la déclaration de la | template. | | Est-ce que cela pourrait fonctionner avec un autre compilateur, ou est-ce | une faute de ma part au niveau de la déclaration du template ? | | | | Voici le code : | | bash-2.05b$ cat template.cc | #include <iostream> | #include <iomanip> | #include <string> | #include <vector> | | using namespace std; | | template <class A, class container=vector<A> > class test | { | public: | test() { | cout << "A : " << typeid(A).name << endl; | cout << "container : " << typeid (container).name << endl; ^
Tu as oublié de placer « () » pour appeler la fonction name.
| } | }; | | int main (int argc, char **argv) | { | return 0; | } | bash-2.05b$ | | Voici l'erreur de compilation | | bash-2.05b$ g++ template.cc -o template | template.cc: In constructor `test<A, container>::test()': | template.cc:12: internal compiler error: in resolve_overloaded_unification, at cc1plus/../../../../contrib/gcc/cp/pt.c:9235 | Please submit a full bug report, | with preprocessed source if appropriate. | See <URL:http://gcc.gnu.org/bugs.html> for instructions. | bash-2.05b$ | | | Stéphane
-- Gabriel Dos Reis
Texas A&M University -- Department of Computer Science 301, Bright Building -- College Station, TX 77843-3112
| Je viens de regarder un exemple de code dans un livre expliquant le
| fonctionnement de chaque classe de la STL, et j'ai voulu tester la
| possibilité de déclarer par défaut une classe lors de la déclaration de la
| template.
|
| Est-ce que cela pourrait fonctionner avec un autre compilateur, ou est-ce
| une faute de ma part au niveau de la déclaration du template ?
|
|
|
| Voici le code :
|
| bash-2.05b$ cat template.cc
| #include <iostream>
| #include <iomanip>
| #include <string>
| #include <vector>
|
| using namespace std;
|
| template <class A, class container=vector<A> > class test
| {
| public:
| test() {
| cout << "A : " << typeid(A).name << endl;
| cout << "container : " << typeid (container).name << endl;
^
Tu as oublié de placer « () » pour appeler la fonction name.
| }
| };
|
| int main (int argc, char **argv)
| {
| return 0;
| }
| bash-2.05b$
|
| Voici l'erreur de compilation
|
| bash-2.05b$ g++ template.cc -o template
| template.cc: In constructor `test<A, container>::test()':
| template.cc:12: internal compiler error: in resolve_overloaded_unification, at cc1plus/../../../../contrib/gcc/cp/pt.c:9235
| Please submit a full bug report,
| with preprocessed source if appropriate.
| See <URL:http://gcc.gnu.org/bugs.html> for instructions.
| bash-2.05b$
|
|
| Stéphane
--
Gabriel Dos Reis
gdr@cs.tamu.edu
Texas A&M University -- Department of Computer Science
301, Bright Building -- College Station, TX 77843-3112
| Je viens de regarder un exemple de code dans un livre expliquant le | fonctionnement de chaque classe de la STL, et j'ai voulu tester la | possibilité de déclarer par défaut une classe lors de la déclaration de la | template. | | Est-ce que cela pourrait fonctionner avec un autre compilateur, ou est-ce | une faute de ma part au niveau de la déclaration du template ? | | | | Voici le code : | | bash-2.05b$ cat template.cc | #include <iostream> | #include <iomanip> | #include <string> | #include <vector> | | using namespace std; | | template <class A, class container=vector<A> > class test | { | public: | test() { | cout << "A : " << typeid(A).name << endl; | cout << "container : " << typeid (container).name << endl; ^
Tu as oublié de placer « () » pour appeler la fonction name.
| } | }; | | int main (int argc, char **argv) | { | return 0; | } | bash-2.05b$ | | Voici l'erreur de compilation | | bash-2.05b$ g++ template.cc -o template | template.cc: In constructor `test<A, container>::test()': | template.cc:12: internal compiler error: in resolve_overloaded_unification, at cc1plus/../../../../contrib/gcc/cp/pt.c:9235 | Please submit a full bug report, | with preprocessed source if appropriate. | See <URL:http://gcc.gnu.org/bugs.html> for instructions. | bash-2.05b$ | | | Stéphane
-- Gabriel Dos Reis
Texas A&M University -- Department of Computer Science 301, Bright Building -- College Station, TX 77843-3112