Standard oder Fehler im VC++-Compiler?



  • Hallo,

    Folgendes verursacht unter VC++ einen Fehler:

    template<typename A, typename B> class ResourceMgr : public Singleton<ResourceMgr<A, B>>
    

    folgendes hingegen nicht:

    template<typename A, typename B> class ResourceMgr : public Singleton<ResourceMgr<A, B> >
    

    Der einzige Unterschied ist das Leerzeichen vor dem letzten ">".
    Ist das ein Fehler in Visual C++ oder ist das so gewollt?

    Danke!



  • TomasRiker schrieb:

    Ist das ein Fehler in Visual C++ oder ist das so gewollt?

    Kein Fehler des VC. Ist so gewollt. Wird aber vielleicht im nächsten Standard anders sein. Stop.

    Der auftretende Fehler ist das Ergebnis der sogenannten "Maximal munch rule". Dabei frisst der Lexer immer das längste gültige Token.
    In diesem Fall ist das ein >>-Operator, der in diesem Kontext aber keinen Sinn macht. Durch das Leerzeichen sorgst du dafür, dass aus dem einzelnen op>> zwei einzelne schließende Klammern werden, welche die beiden Templateparameterlisten abschließen.



  • Danke!
    Für Einheitlichkeitsfanatiker stellt das ein großes Problem dar 😃


Anmelden zum Antworten