Компиляция std :: make_shared в конечном подклассе завершается неудачей в type_traits :: __ is_empty1 с использованием libcxx lib - PullRequest
0 голосов
/ 08 октября 2019

final_class определяется как:

class final_class final : private A {
public :
final_class() : A () {};
};

Я использую конструктор final_class как:

auto a = std::make_shared<final_class>();

И tring для компиляции с использованием libcxx и -std=c++11 не может быть скомпилирован со следующей ошибкой:

libcxx/include/type_traits:957:8: error: cannot derive from 'final' base 'final_class' in derived type 'std::__1::__is_empty1<final_class>'  struct __is_empty1

Как я понимаю, он пытается извлечь из своих параметров, чтобы определить, является ли класс виртуальной базой другого класса. Ранее он работал до введения final в C ++.

Есть ли способ это исправить?

...