Шаблонная специализация и наследование
Предположим, у меня есть шаблонный класс с большим количеством функций, и я хочу специализировать их, чтобы изменить только некоторые из них и сохранить остальные точно так, как указано в базовом шаблонном классе.
Как я могу это сделать?
Ниже приведено то, чего я хочу достичь, но решение не очень хорошее, потому что оно не позволяет мне обратиться к специализации для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()