Что касается CRP , если я хочу реализовать его небольшую вариацию (с использованием параметра шаблона шаблона ), я получаю ошибку компиляции:
template class Derived>
class Base
{
public:
void CallDerived()
{
Derived* pT = static_cast (this);
pT->Action(); // instantiation invocation error here
}
};
template
class Derived: public Base
{
public:
void Action()
{
}
};
Я не совсем конечно, можно было бы выбрать эту форму (, которая не компилируется для меня )вместо использования этой, хотя (это работает)
template
class Base
{
public:
void CallDerived()
{
Derived* pT = static_cast (this);
pT->Action();
}
};
template
class Derived: public Base>
{
public:
void Action()
{
}
};