Seltsamerweise wiederkehrende Vorlage - Variation

BezüglichCRP Wenn ich eine geringfügige Variation davon implementieren möchte (unter Verwendung des Template-Template-Parameters), erhalte ich einen Kompilierungsfehler:

<code>template <template <typename T> class Derived>
class Base
{
public:
    void CallDerived()
    {
        Derived* pT = static_cast<Derived*> (this);
        pT->Action(); // instantiation invocation error here
    }
};

template<typename T>
class Derived: public Base<Derived>
{
public:
    void Action()
    {
    }
};
</code>

Ich bin mir nicht sicher, ob man dieses Formular wählen würde (das nicht für mich kompiliert), anstatt es zu verwenden (das funktioniert)

<code>template <typename Derived>
class Base
{
public:
    void CallDerived()
    {
        Derived* pT = static_cast<Derived*> (this);
        pT->Action();
    }
};

template<typename T>
class Derived: public Base<Derived<T>>
{
public:
    void Action()
    {
    }
};
</code>

Antworten auf die Frage(2)

Ihre Antwort auf die Frage