【发布时间】:2016-11-21 17:05:57
【问题描述】:
想象一下,你有一个像下面这样的嵌套类结构:
struct A
{
struct B
{
struct C{};
};
};
如果你给了一个 C 的实例,就叫 c 之类的
A::B::C c;
可以推断
- 最外层的类(这里是 A)
- 层次结构中的下一个类(此处为 B)
- 嵌套数(此处为 2)
通过模板、编译时递归和模板专业化技术?我尝试了以下几个模板:
template<typename Outer , typename Inner , typename Outer::Inner>
struct nested
{
typedef typename Outer::Innter type;
};
但是如您所见,我无法对 B 和 C 的逐步推导进行递归。您有什么建议吗?
【问题讨论】:
-
我很想知道您通过了解嵌套结构来解决什么问题
-
简单地说,它是一个冗长的算法。
-
你能解释一下否决票吗?我想了解我的错误并改进我的帖子!
-
听起来像是XY Problem 的情况。你希望通过这些内部类实现什么?可能有更简单的方法。
-
我唯一能想到的就是让你的类继承自一个存储信息的模板类。一个简单的解决方案可能是godbolt.org/g/jWpa72 - 您当然可以将其扩展到例如除了作为父母的原始人
标签: c++ templates inner-classes type-deduction