Ищем официальное имя и тип связи для этого типа специализации шаблона, где мы специализируем шаблон только для того, чтобы специализировать реализацию одного метода в шаблоне класса.
template <class T>
class Foo
{
public:
void f()
{
// default method implementation
}
};
// What is the default linkage of this function (I'm guessing
// external based on basic function template specializations),
// and what am I doing called? (method specialization of a class
// template?)
template <>
void Foo<int>::f()
{
// method implementation for Foo<int>
}
Foo<int> f1; f1.f(); //Use implementation for Foo<int>, i.e. the specialized one.
Foo<double> f2; f2.f(); //Use the default implementation.
Терминология этого случая называется явной специализацией. Компилятор выберет «лучший» соответствующий шаблон, который он может найти. Процесс определения «наилучшего» подходящего шаблона немного сложен. Вы можете обратиться к книге «Шаблоны C ++: Полное руководство» для более подробной информации.
Других решений пока нет …