Class Scine::Utils::CloneInterface< Abstract< Derived >, Bases…>

template<class Derived, class ...Bases>
class CloneInterface<Abstract<Derived>, Bases...> : public Bases

Specialization for abstract classes.

This is necessary, because otherwise the inheritance pattern would not work. It would not be necessary if the inheritance would just have 2 level: interface class and derived class. From the moment that there are also abstract classes between interface and derived class, as the Core::Calculator in the Sparrow module is the most notorious example, the cloneImpl() method must be virtualized in the abstract class.