Как выключать методы класса в зависимости от типа шаблона класса?
Как я могу выключить метод Get если T = void?
template<class T>
class A {
public:
T& Get();
private:
T* m_data;
}
Источник: Stack Overflow на русском
Как я могу выключить метод Get если T = void?
template<class T>
class A {
public:
T& Get();
private:
T* m_data;
}
Выключить - никак. Вы можете сделать специализацию шаблона типом void
.
template<class T>
class A {
public:
void Get() { cout << "1 template " << endl; };
private:
T* m_data;
};
template<>
class A<void> {
public:
void Print() { cout << "void template " << endl; };
private:
void* m_data;
};
int main()
{
A<int> a1;
a1.Get();
A<void> a2;
a2.Print();
}