Это определение.
Следующее будет специализацией.
template <>
const int A<int>::s = 20;
Учитывая следующую программу,
#include <iostream>
template<typename T>
struct A {
static const T s;
};
template <typename T>
const T A<T>::s = T(1);
template <>
const int A<int>::s = 20;
int main()
{
double a = A<double>::s;
double b = A<int>::s;
std::cout << "a: " << a << std::endl;
std::cout << "b: " << b << std::endl;
}
Вы должны ожидать, что результат будет:
a: 1
b: 20
Смотрите, как работает https://ideone.com/t7Hxk9