想象一下,您有一个如下所示的嵌套类结构:
struct A
{
struct B
{
struct C{};
};
};
如果你给了一个C的实例,叫c like
A::B::C c;
是否可以推断
- 最外层的类(这里是A)
- 层次结构中的下一个类(此处为 B)
- 嵌套数量(此处为 2)
通过模板、编译时递归和模板特化技术?我已经尝试了如下几个模板:
template<typename Outer , typename Inner , typename Outer::Inner>
struct nested
{
typedef typename Outer::Innter type;
};
但是如您所见,我无法对 B 和 C 进行逐步推导。您有什么建议吗?
最佳答案
你可以创建一个你手动输入的特征:
struct A
{
struct B
{
struct C{};
};
};
template <typename T> struct outter {
static constexpr const std::size_t count = 0u;
};
template <> struct outter<A::B::C>
{
using type = A::B;
static constexpr const std::size_t count = 2u;
};
template <> struct outter<A::B>
{
using type = A;
static constexpr const std::size_t count = 1u;
};
关于c++ - 如何在C++中确定嵌套类结构的外部类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40725591/