获取模板中的外部类的类型

Ser*_*ins 0 c++ templates

struct Outer {
    struct Inner {
    };
};

template <typename T>
void test()
{
    ??Outer?? foo; // How do I get the type of T's outer class ?
}

test<Outer::Inner>();
Run Code Online (Sandbox Code Playgroud)

在test()里面我有一个类型为T的模板参数,我想要声明一个任何类型的变量是T的外部类.

我认为编译器获取该信息应该是微不足道的,但到目前为止还找不到如何做到这一点.

Bri*_*ian 6

它无法完成.确实有很多可供编译器使用的信息,这些信息无法在元编程环境中轻松使用.正在进行的将编译时反射添加到语言中的工作最终可能会改善这种情况,但不要屏住呼吸.

与此同时,你只需要以老式的方式去做.

struct Outer {
    struct Inner {
        typedef Outer outer_class;      
    };
}
Run Code Online (Sandbox Code Playgroud)