Uma coleção polimórfica de CRTP (Curiously Recorrring Template Pattern) em C ++?

Eu tenho aulaBase da qual eu tenho duas classes,DerivedA eDerivedB conforme definido abaixo.

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

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

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

Em resumo, estou tentando fazer o seguinte para manter uma coleção de objetos, alguns dos quais sãoDerivedA e alguns dos quais sãoDerivedB:

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

O que é obviamente impossível, porque agora eu fiz a aulaDerived uma classe modelada.

Existe alguma maneira de criar / manter uma coleção polimórfica de objetos?

EDIT: Infelizmente, uma estrutura de modelo simples não funciona como a funçãoimplementation é modelado no meu programa atual - entãoimplementation teria que ser uma função virtual pura modelada, que não pode ser. Perdoe minha falta de explicação.

questionAnswers(4)

yourAnswerToTheQuestion