【发布时间】:2019-09-01 15:43:21
【问题描述】:
我正在寻找一种方法来获取所有继承类的元组包,但找不到。
意图:如果一个类继承自模板基类,我需要静态断言。模板参数将从基础模板的特化中推断出来,因为我可以首先推断出它的类型名。 私有继承。
这能做到吗?
class Inherited : ClassA, ClassB ..., Class N
{};
//Expected usage
templ_traits<Inherited>::bases_tuple;
templ_traits<Inherited>::bases_count;
【问题讨论】:
-
"这能做到吗?" 你只能得到一个包含所有类数据成员类型的元组。你所说的最终是反射,这不是 C++ 在这一点上真正拥有的东西。
-
虽然有合理的反射需求,但也许有适合您的用例的解决方法?考虑详细说明你提出这个问题的原因。也许还有另一种方法可以满足您的需求?
-
如果您可以在层次结构的每个类上添加一些类型别名,就可以做到这一点。这是一个选择吗?
-
@StoryTeller 我的特殊情况正在工作,但我希望改进使用。我不想提供与基本抽象类一起工作,尽管它可以工作。稍后,当我通过正确的 Internet 连接访问我的 PC 时,我将按照我最初的意图更新帖子。不过,我认为这个问题本身就很有趣。
-
@rubenvb 你到底是什么意思?
标签: c++ c++17 variadic-templates typedef