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

时间:2016-02-08 19:25:02

标签: c++ templates

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="160dp"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    tools:context="de.schumann_connection.yahtzee.DescriptionColumnFragment">

    <View
        android:layout_width="1dp"
        android:layout_height="match_parent"
        android:background="#FF000000" />

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        tools:context="de.schumann_connection.yahtzee.DescriptionColumnFragment">

        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#FF000000" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="43dp"
            android:text=""/>
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#FF000000" />
    </LinearLayout>

    <View
        android:layout_width="1dp"
        android:layout_height="match_parent"
        android:background="#FF000000" />
</LinearLayout>

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

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

1 个答案:

答案 0 :(得分:6)

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

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

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