У меня есть шаблон класса
template<typename T>
class D : public B {...}
, где B - чистый виртуальный интерфейс, реализованный в классе D. Однако для одного типа T0 реализация имеет дополнительные данные и дополнительную функцию-член, работающую с этими данными. ,Поэтому я должен специализировать класс D для этого случая:
template<>
class D<T0> : public B {...}
В то же время реализация всех других методов в этой специализации точно такая же, как в общем случае, и я не хочускопировать и вставить его. Вопрос в том, как вызвать универсальную реализацию в классе D из класса D<T0>
, если это вообще возможно.
PS. Конечно, есть решение с промежуточным производным классом C, как предложено @MaxLanghof и @Klaus. Однако в этом решении можно создать экземпляр класса C<T0>
, который я не хочу. Это решение является последним средством, которое я буду использовать, если не существует другого решения. Может быть, в C ++ 11/14 есть какие-то современные конструкции, которые могут помочь в таких случаях?