Предположим, у меня есть шаблон класса Foo
:Пусть шаблон частичных функций членов специализаций делиться с общими конкретизации
template<typename T, typename U>
struct Foo {
~Foo() = default;
// I want to reuse these methods for all instantiations of Foo
void bar() {}
void poi() {}
};
Я хочу специализироваться деструктор для любого Foo<T, int>
, но я хочу Foo<T, int>
поделиться другие функции-члены с общие экземпляры. Но если я пытаюсь сделать:
template<typename T>
Foo<T, int>::~Foo()
{}
вне класса, он не компилируется, то ошибка является «неправильным использованием неполного типа struct Foo<T, int>
». Что означает эта ошибка, и как я могу достичь того, что я пытаюсь сделать?
Почему вы не создать базовый класс от от которых наследуются как общие экземпляры, так и специализации? – linuxfever