кодекса говорит:C++: Как частичной специализации шаблонной функции в классе шаблон
template<typename Group>
struct Vector3D {
Group x, y, z;
Vector3D(Group x, Group y, Group z) : x(x), y(y), z(z) {
}
template<int p> Group Norm() const;
};
template<typename Group> template<int p>
Group Vector3D<Group>::Norm() const {
return pow(pow(x, p) + pow(y, p) + pow(z, p), (1.0/p));
}
/*
template<typename Group> template<>
Group Vector3D<Group>::Norm<2>() const {
return sqrt(x * x + y * y + z * z);
}*/
Закомментированный блок не удается скомпилировать в VC11 (vs2012)
Может кто-нибудь помочь, чтобы указать, что это правильный способ частичной специализации функции Norm?
+1 Не говоря уже в моем ответе, но среди различных альтернатив, пересылая к статический член шаблона класса, который может быть частично специализированным, является еще одним хорошим вариантом –