gcc mag Template Konstrukt nicht
-
Gibt es einen (Standard C++) Grund, wieso mein gcc 3.4.1 als mingw folgende Klassentemplate-Member Funktion
template<typename TreeType> TreeType TreeMember<TreeType>::evaluate(const ParamList ¶ms) const { std::map<std::string, TreeType>::const_iterator iter; ... ... ... }
Mit folgender Fehlermeldung quittiert:
93 expected `;' before "iter"
und bei verwendund von iter meint, dieser Bezeichner wäre undeklariert?
Der Intel Compiler hat keine Probleme damit.Wenn das schon wieder ein Fehler im Compiler ist, dann schmeisse ich den endgültig ins Meer.
-
Ich glaube da fehlt typename...
-
Ja, Typnamen die von einem template-Argument abhängig sind (der Typ von iter in diesem Fall), müssten mit typename präfixt werden. Also:
typename std::map<std::string, TreeType>::const_iterator iter;
-
Ah, vielen Dank. War ja ne sehr schlüssige Fehlermeldung vom gcc.
-
Naja, wenn er so einfach rausfinden könnte was fehlt... dann könnte er ja auch ohne das typename auskommen. Leider glaubt er aber, daß Du auf einen Member zugreifen willst und nicht auf einen Typ. Daher die blöde Meldung.
-
Ja, C++ Compiler geben in der Regel die verwirrtesten Fehlermeldungen von sich
-
komisch, vorallem den gcc hab ich bei sowas immer für sehr genau gehalten, bei mir wirft der bei sowas aus prinzip immer ein "xxx withput typename is deprecated"