Полиморфная коллекция шаблонов Curiously Recurring Template Pattern (CRTP) в C ++?

У меня есть классBase из которого у меня есть два класса,DerivedA а такжеDerivedB как определено ниже.

template <typename Derived>
class Base{
public:
    double interface(){
        static_cast<Derived*>(this)->implementation();
    }
};

class DerivedA : public Base<DerivedA>{
public:
    double implementation(){ return 2.0;}
};

class DerivedB : public Base<DerivedB>{
public:
    double implementation(){ return 1.0;}
};

Короче говоря, я пытаюсь сделать следующее, чтобы поддерживать коллекцию объектов, некоторые из которыхDerivedA и некоторые из которыхDerivedB:

std::vector<std::shared_ptr<Derived>>

Что, очевидно, невозможно, потому что я сейчас сделал классDerived шаблонный класс.

Есть ли способ, которым я могу создать / поддерживать полиморфную коллекцию объектов?

РЕДАКТИРОВАТЬ: К сожалению, простая шаблонная структура не работает как функцияimplementation шаблонизируется в моей реальной программе - так тогдаimplementation должно быть шаблонной чистой виртуальной функцией, чего не может быть. Простите за отсутствие объяснений.

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

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