typedef in klassen



  • hallo

    es ist ein klassentemplate gegeben:

    template<class T>
    struct foo
    {
        typedef T template_arg;
    };
    

    nun wurde von diesem klassentemplate eine instanz erstellt. ich würde jetzt eine variable aufgrund des typedefs erstellen:

    foo<int> instance;
    instance::template_arg bar;
    

    geht aber nicht, der compiler meldet mir dann:

    prog.cpp:15:18: error: ‘instance’ is not a class or namespace
    

    wie kann ich ansonten template_arg instanziieren?



  • foo<int>::template_arg integer;
    


  • Edit: Ging am Problem vorbei, aber nur 180°



  • Das von ScottZhang oder

    decltype(instance)::template_arg bar;
    

    Btw:

    Eisflamme schrieb:

    typedef typename T template_arg;
    

    😕



  • Eisflamme schrieb:

    typedef typename T template_arg;
    

    T könnte ja nach der Definition hier auch z.B. selbst ein Template sein sein, dann geht :: so nicht. Um dem Compiler das klar zu machen, muss

    ahh. ist das problem auf die selbe weise gelöst wenn der templateparameter typename statt class ist?



  • Ach mensch, decltype . Brett vorm kopp heute, naja 35° + 🙂
    Decltype ist die gesuchte Lösung, meins war irgendwie redundant ...


Log in to reply