Ik heb een class met een constructor en een template member function, ongeveer als volgt:
Ik gebruik de VC++ 6.0 compiler om dit stukje te compileren, maar ik krijg de template instantiation van f<1> niet aan de gang. Als ik bovenstaand stukje compileer, klaagt de compiler over syntax fouten. Om hem tegemoet te komen heb ik dan maar eens wat onjuiste code geprobeerd, en met onderstaande wijziging compileert hij wel.
Hij slaat echter bij het debuggen functie f over.
Het lijkt onmogelijk om functies op deze manier te instantiëren, want andere syntaxvariaties krijg ik ook gecompileerd, maar dan met warnings die doen vermoeden dat '<' en '>' als operator geïnterpreteerd worden.
Omdat de template een integer verwacht, kan ik ook niet aan automatische instantiëring laten doen. Iemand een idee hoe ik het best rond dit irritante probleem kan werken? Of doe ik misschien gewoon iets 100% fout?
C++:
1
2
3
4
5
6
| class X { public: X() { f<1>(); } template<int i> int f() { /* doSomething */ } } |
Ik gebruik de VC++ 6.0 compiler om dit stukje te compileren, maar ik krijg de template instantiation van f<1> niet aan de gang. Als ik bovenstaand stukje compileer, klaagt de compiler over syntax fouten. Om hem tegemoet te komen heb ik dan maar eens wat onjuiste code geprobeerd, en met onderstaande wijziging compileert hij wel.
C++:
1
| X() { f<1>(1); } |
Hij slaat echter bij het debuggen functie f over.
Het lijkt onmogelijk om functies op deze manier te instantiëren, want andere syntaxvariaties krijg ik ook gecompileerd, maar dan met warnings die doen vermoeden dat '<' en '>' als operator geïnterpreteerd worden.
Omdat de template een integer verwacht, kan ik ook niet aan automatische instantiëring laten doen. Iemand een idee hoe ik het best rond dit irritante probleem kan werken? Of doe ik misschien gewoon iets 100% fout?
Wij onderbreken deze thread voor reclame:
http://kalders.be