首页 > 解决方案 > 使用 libcxx lib 在 type_traits::__is_empty1 中对最终子类的 std::make_shared 进行编译失败

问题描述

final_class 定义为:

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

我使用 final_class 构造函数:

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

并尝试使用 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++ 之前就可以工作。

有没有办法解决它?

标签: c++11gccandroid-5.0-lollipoplibc++

解决方案


推荐阅读