Parametername einer Methode == Name einer Templateklasse
-
Hy!
Ich habe ein Problem mit folgendem Code:
namespace Test { template <long l> class foo { }; void Func(int& foo); } void Test::Func(int& foo) { } int main() { }
Dort will ich den Namen der Template-Klasse (foo) als Parameternamen für die Methode Func benutzen.
Der Comeau Compiler und der g++ 3.2 compilieren den Code anstandslos, doch Microsoft Visual C++ 7.1 meint:
error C2955: 'Test::foo': für die Verwendung einer Vorlagenklasse ist eine Vorlagen-Argumentliste erforderlich
Wenn ich allerdings
- den Namespace ganz entferne
- oder die Implementation der Methode direkt in den Namespace schreibe
- oder den Integer per Value, statt per Referenz übergebedann funktioniert es wieder.
Wie ist das zu erklären? Ein Bug?
cu
-
Mit der Bezeichnung "Bug" wäre ich da vorsichtig. Du musst bedenken vc++ ist in Details != Ansi c++
-
Ich dachte der 2003er soll so standardkonform sein. Und dann hat es schon Probleme mit den einfachsten Sachen. *g*