Templatespezialisierung in einer verschachtelten Klasse



  • Hallo,

    ich habe folgende Klasse:

    template <typename T1, typename... Ts>
    class Outer
    {
      class Inner
      {
        template <size_t N> struct Spec;
      };
    };
    

    Spec will ich jetzt außerhalb der Klasse definieren und für N=0 spezialisieren:

    template <size_t N, typename T1, typename... Ts>
    struct Outer<T1, Ts...>::Inner::Spec
    {
      void bar()
      {
        Spec<N-1>::bar();
      }
    };
    
    template <typename T1, typename... Ts>
    struct Outer<T1, Ts...>::Inner::Spec<0>
    {
      void bar() {}
    };
    

    Allerdings bekomme ich seltsame Fehler beim compilieren, die ich nicht durch Google gefunden habe:

    invalid class name in declaration of 'class Outera<T1, Ts...>::Inner::Spec'
    (Zeile 2, 2. Codeblock)
    
    too few template parameter lists
    new type may not be defined in a return type
    (Zeile 11, 2. Codeblock)
    

    Kompiliert hab ich mit g++ 4.5.3, -std=c++0x flag

    Für Hinweise bin ich sehr dankbar 🙂


Anmelden zum Antworten