foo <myclass <int>>(...) Tut von Volkard
-
Arbeite grade das Tut von Volkard durch, nochmal großes Lob an dich... Folgende Frage stellte sich mir dann:
Ich habe eine Template-Klasse, die ich als Typangabe für eine Template-Funtkion verwenden will:
foo <myclass <int>>(...);funktioniert ja nicht, wie geht das richtig?
-
so gehts:
foo <myclass <int> >(...);//man achte auf das Leerzeichen zwischen den beiden ">"
wenns das wieder erwarten nicht sein sollte, poste code
-
ok, ich versuchs mal... aber irgendwie schon komisch oder? hängt das mit den streams und dem Bitshift-Operator zusammen, oder warum muss da ein Zwischenraum sein?
-
Ja, genau daran liegt's. C++ abreitet nach dem Prinzip immer Tokens zu bilden die möglichst groß sind.
Findet er ein > und danach ein Leerzeichen, dann liefert er > als Token. Findet er aber >> dann kann er das als das längere Token >> zurückliefern. Und da er grundsätzlich die längeren nimmt wird das falsch geparsed.