Как выключать методы класса в зависимости от типа шаблона класса?

Рейтинг: 0Ответов: 1Опубликовано: 06.03.2023

Как я могу выключить метод Get если T = void?

template<class T>
class A {
public:
  T& Get();
private:
  T* m_data;
}

Ответы

▲ -1

Выключить - никак. Вы можете сделать специализацию шаблона типом 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();
}