c++ - 获取模板中外部类的类型

标签 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>();

在 test() 内部我有一个 T 类型的模板参数,我想声明一个任何类型的变量是 T 的外部类。

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

最佳答案

这是不可能的。确实有很多信息可供编译器使用,但无法在元编程上下文中轻松使用。为语言添加编译时反射的持续工作可能最终会改善这种情况,但不要屏住呼吸。

与此同时,您只需按照老式的方式进行即可。

struct Outer {
    struct Inner {
        typedef Outer outer_class;      
    };
}

关于c++ - 获取模板中外部类的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35277642/

相关文章:

c++ - Rcpp 可以公开一个引用同一类的 C++ 类方法吗?

c++ - Makefile 目标 : Difference between %. o 和 $(OBJ)

php - 使用 smarty 编译 product.tpl 时出错

c++ - 如何使用friend访问STL私有(private)成员

c++ - 如何在 C++ 模板函数中设置默认值?

c++ - 获取 C2760 语法错误:意外标记 'int',std::max<int>(...) 预期为 'expression'

Silverlight:文本修剪被切断的按钮模板

c++ - 在重载的 << 运算符中使用 << 运算符

python - 拥有 Django 的 {% trans %} 标签

c++ - 指针 - 动态分配困惑