Zugriff auf Loki::Typelist



  • Ja, ich weiß das es das TypeAt Template gibt. Ich schreibe aber grade an einem Rekursiven Makro (Ja, es _muss_ ein Makro sein) und da ergibt sich folgendes Problem. Normalerweise verwendet man in rekursiven templates die mit Typlisten arbeiten implizit code wie tlist::Head::Head::Tail oder so. Wenn ich das als in einem Makro benutze, ergibt sich dieser code auch, aber dann für den compiler explizit (Er wird ja durch den Präprozessor expandiert.). Jetzt mal ein bisschen code:

    TYPELIST_5(int,double,short,bool,char)::Tail::Tail::Head;
    

    Fehler:

    error C2039: '__ctor': Ist kein Element von 'Loki::Typelist<T,U>'
            with
            [
                T=double,
                U=Loki::Typelist<short,Loki::Typelist<bool,Loki::Typelist<char,Loki::NullType>>>
            ]
    error C2065: 'Head': nichtdeklarierter Bezeichner
    

    Wenn ich jetzt aber schreibe:

    typedef TYPELIST_5(int,double,short,bool,char)::Tail tail1;
    typedef tail1::Tail tail2;
    typedef tail2::Head head;
    

    gibt es keine Fehler. Wie müsste der obere code richtig aussehen?
    Achja: Gibt es eigentlich beim msvc eine Möglichkeit, ein Makro mal probeweise zu expandieren? (Hab keine Lust erst nen thread dafür aufzumachen.)



  • typedef TYPELIST_5(int,double,short,bool,char)::Tail::Tail::Head typ;
    

    was willst du eigentlich machen? rekursives makro hört sich für mich so umständlich an



  • Ich probier grad was aus, ist vmtl. Unsinn. Aber allgemein, warum lässt sich der expandierte code nicht kompilieren. Gehts auf nem anderen compiler (seit der Geschichte mit friend für templates mit template-template-Parametern trau ich dem msvc 7.1 nicht mehr...)?
    /edit: ich seh grade, der code den postetest ist garnicht meiner. Kompiliert der so? Bei mir kommt nämlich genau der schon gepostete Fehler...
    /edit: Ich hab das mal eben durchs MingwStudio gejagt, keine Fehler! Dieser msvc treibt mich zum Wahnsinn. Gibt es einen workaround für sowas?



  • msvc6.0? vermutlich nein. irgendwann muss man auch abstand von solch alten gurken nehmen, vorallem bei templates istbei denen sehr schnell ende.

    //edit mich würde aber wirklich interessieren, was du machen willst^^



  • @otze:

    ness schrieb:

    trau ich dem msvc 7.1 nicht mehr...

    Na, ob er wohl den vc6.0 verwendet? 😉



  • jetzt reit nicht auf solchen Kleinigkeiten rum 🤡
    hatte noch im Kopf aus nem andren thread, dass er den msvc 6.0 benutzte, und da hab ich halt mal die 7.1 überlesen 🙄


Anmelden zum Antworten