gpt4 book ai didi

c++ - 获取继承基类类型的元组

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:39:01 33 4
gpt4 key购买 nike

我一直在寻找一种方法来获取所有继承类的元组包,但找不到。

意图:如果一个类继承自模板基类,我需要静态断言。模板参数将从基本模板的特化中推导出来,因为我可以首先推导出它的类型名。私有(private)继承。

这完全可以做到吗?

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++ - 获取继承基类类型的元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55625136/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com