Вызов базовой функции из производного деструктора не удается (CRTP, классы шаблонов) [дублировать]C++

Программы на C++. Форум разработчиков
Anonymous
Вызов базовой функции из производного деструктора не удается (CRTP, классы шаблонов) [дублировать]

Сообщение Anonymous »

Базовый класс CRTP A с интерфейсной функцией a () .
a Class B , который реализует a () через a_impl () . Но b также шаблон. В Destructor B я пытаюсь вызвать a () - и это не удается. A '< /p>
gcc: 13: 18: ошибка: нет никаких аргументов для «а», которые зависят от параметра шаблона, поэтому объявление «a» должно быть доступно [-wtemplate- Body]
msc сдает успешно
Я потерян. z/otx5wzco5
#include

template
class A {
public:
void a(void) {return static_cast(this)->a_impl();}
};

template
class B : public A
{
public:
~B() { a(); }

void a_impl(void) { std::cerr

Подробнее здесь: https://stackoverflow.com/questions/794 ... mplate-cla

Вернуться в «C++»