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;
}
Он компилируется под GCC 4.1, но не ссылается:
static.cpp:(.text._ZN1BI1ALi1EEC1Ev[B<A, 1>::B()]+0x5): undefined reference to `B<A, 1>::a'
Я бы предпочел сохранить специализированную инициализацию, если это возможно, поскольку массив содержит некоторые данные, относящиеся к типу.