Шаблонная специализация и наследование

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

Как я могу это сделать?

Ниже приведено то, чего я хочу достичь, но решение не очень хорошее, потому что оно не позволяет мне обратиться к специализации дляint какBase<int> - мне нужно использоватьIntSpec для этого.

#include <iostream>

using namespace std;

template<typename T>
struct Base
{
  void print1() {cout << "Base::print1" << endl;};
  void print2() {cout << "Base::print2" << endl;};
};

struct IntSpec : public Base<int>
{
  void print2() {cout << "Base<int>::print2()" << endl;};
};

int main()
{
  Base<double> d;
  // Base<int> i;  <-- I want this kind of instantiation
  IntSpec i;

  d.print1();
  d.print2();
  i.print1();
  i.print2();
}

Выход:

Base::print1
Base::print2
Base::print1
Base<int>::print2()

Ответы на вопрос(3)

Ваш ответ на вопрос