ein namensproblem mit templates



  • hmm diese art von problem hatte ich noch nie:

    also, ich habe eine klasse Foo:

    template<class T,class U,template<class,class> V>
    class Foo{...}
    

    nun soll diese Klasse so verwendet werden:

    template<class T,class U>
    class Bar{
       Foo<T,U,Bar> bar;
    };
    

    wenn man das compiliert expandiert der compiler das zu:

    Foo<T,U,Bar<T,T> > bar;
    

    und meine schönen template template parameter sind futsch^^

    gibts eine möglichkeit, das zu umgehen? irgendein keyword? ich hab zwar jetzt eine version ohne template template parameter geschrieben, aber ganz so schön finde ich das nicht...



  • template<class T,class U>
    class Bar{
       Foo<T,U,Bar<T,U> > bar;
    };
    

    Schon mal so versucht ?

    Devil



  • dein code ist äquivalent zu:

    template<class T,class U>
    class Bar{
       Foo<T,U,Bar> bar;
    };
    

    und da liegt das problem, weil ich die template parameter eben nicht schon gesetzt haben will.

    //edit oops hab mich ja im startpost verschrieben, natürlich muss da:

    Foo<T,U,Bar<T,U> > bar;
    

    stehen...naja Uhrzeit^^



  • Hallo,
    mach einen "qualified name" draus und es sollte funktionieren:

    template<class T,class U> 
    class Bar{ 
       Foo<T,U, ::Bar> bar; 
    };
    

Anmelden zum Antworten