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.


Anmelden zum Antworten