C++11 在最后一个子类上编译std::make_shared在类型_traits中失败::_是使用libcxx lib的_empty1

C++11 在最后一个子类上编译std::make_shared在类型_traits中失败::_是使用libcxx lib的_empty1,c++11,gcc,android-5.0-lollipop,libc++,C++11,Gcc,Android 5.0 Lollipop,Libc++,最终课程定义为: class final_class final : private A { public : final_class() : A () {}; }; 我使用最终类构造函数作为: auto a = std::make_shared<final_class>(); 据我所知,它试图从其参数派生,以确定一个类是否是另一个类的虚拟基。 以前在最终< /COD> C++中介绍过。 有没有办法解决这个问题?我试过这个(不是在Android上),但没有问题,使用的是clang

最终课程定义为:

class final_class final : private A {
public :
final_class() : A () {};
};
我使用最终类构造函数作为:

auto a = std::make_shared<final_class>();
据我所知,它试图从其参数派生,以确定一个类是否是另一个类的虚拟基。 以前在最终< /COD> C++中介绍过。
有没有办法解决这个问题?

我试过这个(不是在Android上),但没有问题,使用的是clang 5/6/7/8/9。你的clang版本有多旧?@MarshallClow应该是clang 3.4或更低版本,因为
\u在3.5中出现了
功能。通过重新定义
\uu的功能
@Nikita:Yup,它是Clang3.4.可以在任何Clang版本上观察到这个问题。。马歇尔,抱歉耽搁了!除了升级工具链本身,还有什么解决方案?
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