获取继承基类类型的元组
Get tuple of inherited base classes' types
我正在寻找一种方法来获取所有继承类的元组包,但找不到。
打算:我需要静态断言一个类是否继承自模板基类。 模板参数是从基本模板的专用化中推断出来的,因为我可以首先推断出它的类型名称。私有继承。
这完全可以做到吗?
class Inherited : ClassA, ClassB ..., Class N
{};
//Expected usage
templ_traits<Inherited>::bases_tuple;
templ_traits<Inherited>::bases_count;
你不能
用当前的语言得到这样的列表,但是你可以只使用std::is_base
来解决你的实际问题。
从 https://en.cppreference.com/w/cpp/types/is_base_of:
#include <iostream>
#include <type_traits>
class A {};
class B : A {};
class C {};
int main()
{
std::cout << std::boolalpha;
std::cout << "a2b: " << std::is_base_of<A, B>::value << 'n';
std::cout << "b2a: " << std::is_base_of<B, A>::value << 'n';
std::cout << "c2b: " << std::is_base_of<C, B>::value << 'n';
std::cout << "same type: " << std::is_base_of<C, C>::value << 'n';
}
输出:
a2b: true
b2a: false
c2b: false
same type: true
相关文章:
- 在C++中,如何通过几种类型从元组中选择多个元素
- 将元组类型扩展为可变参数模板?
- 时间复杂度 当具有复合数据类型(如元组或对)时?
- 创建派生自可变参数模板包的类型元组
- 枚举元组类型的最佳方法?
- 验证(使用 static_assert)元组类型是否遵循某种顺序(有状态编译时检查)
- C 元组类型用于功能参数类型
- C++ 如何根据部分特化制作 std::元组类型?
- 在运行时基于基础元组类型生成元素
- 模板函数,具有元组类型子集的相应参数
- 获取级联元组类型;组合result_of和tuple_cat
- 类元组类型(tuple,pair)的模板重载
- 如何将l值元组类型转换为值元组类型
- 使用C++元组类型作为映射中的键
- 转换元组类型
- 如何从旧的元组类型和boost中的类型创建新的元组类型
- 使用另一个构造一个具体的boost::元组类型
- 如何反转元组类型中元素类型的顺序
- 增强元组类型的hana大小
- 测试类型 V 是否属于没有变变量的元组类型<...>