Ik probeer een set partieel gespecialiseerde template classes aan de gang te krijgen in VC++ 2010, maar het wil niet werken. Ik heb de code teruggebracht tot het volgende:
Ik kan trouwens in de gespecialiseerde functie syntaxfouten maken, de compiler klaagt niet. Dus blijkbaar wordt de hele gespecialiseerde template overgeslagen.
Wat zie ik over het hoofd?
/Edit: Ik heb de code net gecompileerd met gcc 4.4.5, en dan werkt het ook niet. Dus het is geen MS quirk.
C++:
b.Functie() zou 'gespecialiseerd' moeten geven, maar doet dat niet. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| template< class A, class enable = void > class TestTemplate { A data; public: void Functie( void ) { printf( "ongespecialiseerd\n" ); } }; template<class A> class specialize {}; template<> class specialize<int> { typedef bool yes; }; template< class A > class TestTemplate< A, typename specialize<A>::yes > { public: void Functie( void ) { printf( "gespecialiseerd\n" ); } }; int main( void ) { TestTemplate<double> a; TestTemplate<int> b; a.Functie(); b.Functie(); return 0; } |
Ik kan trouwens in de gespecialiseerde functie syntaxfouten maken, de compiler klaagt niet. Dus blijkbaar wordt de hele gespecialiseerde template overgeslagen.
Wat zie ik over het hoofd?
/Edit: Ik heb de code net gecompileerd met gcc 4.4.5, en dan werkt het ook niet. Dus het is geen MS quirk.
[ Voor 5% gewijzigd door Mijzelf op 07-09-2011 16:54 ]