template meta programming



  • Hallo,

    ich hab so meine Probleme folgenden Code aus der Doku der boost MPL Library
    zu verstehen:

    // permutation_holder<T>::type is an array type which can contain 
    // all permutations of a given T.
    
    // unspecialized template for scalars
    template< typename T >
    struct permutation_holder
    {
        typedef T type[1][1];
    };
    
    // specialization for array types
    template< typename T, unsigned N >
    struct permutation_holder<T[N]>
    {
        typedef T type[factorial<N>::value][N];
    };
    

    factorial<N>::value berechnet die fakultät von N.. denke dass is hier nich weiter wichtig is halt ne konstante abhängig von N.

    Also was ich kapiert hab is dass mir der compiler einen typ erzeugt.
    Für

    permutation_holder<int>::type myvar;
    

    zB eben
    int[1][1] myvar;

    ist dass dann so gedacht, dass

    permutation_holder<int[5]>::type myvar2;
    

    ..ein array der form
    int myvar2[factorial<5>::value][5];

    erzeugt? 😕

    thx



  • ja, dass wird über die Template Spezialisierung erreicht.



  • oh. Dann war die Beitrag ja n bissl für die Katz' 🙂

    dank dir..


Anmelden zum Antworten