membre statique d'initialisation spécialisé de classe de modèle

class A
{
};

template <typename A, int S>
class B
{
public:
        static int a[S];

        B()
        {
                a[0] = 0;
        }
};

template<> int B<A, 1>::a[1];

int main()
{
        B<A, 1> t;
        t;
}

Il compile avec GCC 4.1, mais n'ont pas de lien:

static.cpp:(.text._ZN1BI1ALi1EEC1Ev[B<A, 1>::B()]+0x5): undefined reference to `B<A, 1>::a'

Je préfère garder l'initialisation spécialisé s'il est possible, depuis le tableau contient certaines données spécifiques au type.

Ne serait pas B<A, 1>::un ont seulement 1 élément? Donc, par le référencement de B<A, 1>::a[1], n'êtes-vous pas d'indexation au-delà des limites du tableau?
Je ne vois pas typename A faire tout.

OriginalL'auteur kaspy | 2010-02-26