Is het in C++ mogelijk om een template specialisatie in de generieke definitie van dat template te gebruiken. Zoals b.v. in:
Onder gcc 3.3.3 compileerde dit zonder problemen, maar nu onder 3.4.1 begint het te zeuren dat m_b in de generieke definitie een incompleet type heeft. Ik kan me zo'n foutmelding voorstellen, maar ik zou niet weten hoe ik het anders op moet schrijven, specialisaties moeten nu eenmaal na de generieke definitie (en forward references werken ook niet). Ook Comeau klaagt, dus ik geloof wel dat het zo fout is, maar is het gewoon een kwestie van anders opschrijven, of kan het niet wat ik wil?
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| template<class T> class Foo { private: T m_a; Foo<int> m_b; public: Foo(const Foo<int> &); operator Foo<int> (); }; template<> class Foo<int> { int m_a; int m_b; }; |
Onder gcc 3.3.3 compileerde dit zonder problemen, maar nu onder 3.4.1 begint het te zeuren dat m_b in de generieke definitie een incompleet type heeft. Ik kan me zo'n foutmelding voorstellen, maar ik zou niet weten hoe ik het anders op moet schrijven, specialisaties moeten nu eenmaal na de generieke definitie (en forward references werken ook niet). Ook Comeau klaagt, dus ik geloof wel dat het zo fout is, maar is het gewoon een kwestie van anders opschrijven, of kan het niet wat ik wil?
[ Voor 5% gewijzigd door RickN op 13-07-2004 14:21 ]
He who knows only his own side of the case knows little of that.