In Bezug auf CRP wenn ich eine leichte Variation davon (unter Verwendung von Template-Template-Parametern) implementieren mag ich einen Compiler-Fehler:Merkwürdiger wiederkehrend template - Variation
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()
{
}
};
Ich bin nicht ganz sicher, man würde diese Form gewählt hat (das bedeutet für mich nicht kompilieren) anstelle dieser obwohl die Verwendung (dies funktioniert)
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()
{
}
};
Ziemlich interessant muss man über Typname T in Deklaration zweimal explizit sein ... Nicht wirklich verstehen, warum – Ghita
gerade erkannt, dass abgeleitete muss auch seine T-Parameter übertragen werden. – Ghita