Здравствуйте, Аноним, Вы писали:
А>Как правильно чтобы компилялось?
Не подскажу, как грамотно частично специализировать, а вот как обойти — это запросто.
Раз у тебя имя зависит только от индекса — вынеси в отдельный шаблон.
template<int N> struct Name { static const char* const name; };
template<int N> const char* const Name::name = "";
template<> const char* const Name<1>::name = "1";
template<> const char* const Name<2>::name = "2";
template<int N, class X, class Y, class Z>
string const TProperty<N,X,Y,Z>::name = Name<N>::name;