Template-Klasse soll sich selbst Template-Template-Parameter uebergeben ...



  • 😮

    hier mal eine lustige Konstruktion:

    template<class C, template <class> class TC> 
    class Class1 {    
        ...    
        };
    
    template <class T>
    class Class2 {
        typedef Class1<T,Class2> my_test_type;
        ...
        };
    

    fuehrt zur Fehlermeldung:

    Test.h:XX: error: type/value mismatch at argument 2 in template parameter list for 
    ‘template<class T, template<class> class TC> class Class1’
    Test.h:XX: error:   expected a class template, got ‘Class2<T>’
    

    Warum? Wieso? Weshalb? Und kann man so etwas trotzdem irgendwie machen?



  • template<class C, template <class T> >



  • Das Problem ist, dass innerhalb von Class2 der Typ "Class2" gleichwertig zu "Class2<T>" ist, das problem kann man umgehen, indem man den namespace angibt:

    template<class C, template <class> class TC>
    class Class1 {    
        ...    
        };
    
    template <class T>
    class Class2 {
        typedef Class1<T,::Class2> my_test_type;
        ...
        };
    
    //bzw
    namespace foo{
    template<class C, template <class> class TC>
    class Class1 {    
        ...    
        };
    
    template <class T>
    class Class2 {
        typedef Class1<T,foo::Class2> my_test_type;
        ...
        };     
    }
    


  • Dankeschoen, mit den namespaces klappt es 👍 🙂


Anmelden zum Antworten