LINUX.ORG.RU

явное инстанцирование нестатичного метода шаблонного класса

 ,


0

1

Можно ли явно специализировать один нестатичный метод класса ? Или надо переписывать весь класс ? И второй вопрос. Если этот метод внутри себя вызывает другой метод. Явно инстанцировать вызываемый метод тоже надо?



Последнее исправление: kabanchik (всего исправлений: 1)

Ответ на: комментарий от alysnix

ну и? отвечая на первый свой вопрос - да, можно. Только где офф это сказано? По второму вопросу - возможно, там происходит неявное инстанцирование, ибо компилируется и запускается.

kabanchik
() автор топика
Ответ на: комментарий от kabanchik

хотя ошибаюсь, у вас полная специализация класса. Т.е. если в вашем примере добавить в базовый класс новый метод, то у вас не будет CE, пока вы новый метод тоже не специализируете

kabanchik
() автор топика

можно

#include <iostream>
using namespace std;

template <typename T = void>
struct Foo {
    void foo();
};

template <typename T>
void Foo<T>::foo() {
    cout << "default" << endl;
}

template <>
void Foo<bool>::foo() {
    cout << "bool" << endl;
}

int main() {
    Foo f;
    f.foo();  // "default"
    Foo<bool> f2;
    f2.foo(); // "bool"
}
anonymous
()