1

正如标题所示,我试图使用 decltype 来获取模板的类型。我尝试的方法是:

template<typename T> class List
{
....
public:
    typedef T type;
....
};

主程序

int main(int argc, char* argv[])
{
    List<int> intl;
    decltype(intl)::type t;  // compiler doesnt try to access the decltype's members but reverts to global namespace (as if i had typed :: on a new line
}

我的印象是 decltype 返回一个类型,就好像你乱写它一样(在代码中也称为“int”)。不是这样吗?

另外,还有其他方法可以从模板类中获取类型名 T 吗?

提前致谢。

扩展:

    List<int> intl;
typedef decltype(intl) listtype;
listtype::type i;

我是一个无符号整数……我很困惑

好的,找到了。1 中的 WOO 2 编译器错误 :) 我有一个声明 unsigned int 的 for 循环(然后超出范围,但由于某种原因,当我稍后使用它时它仍然是 unsigned int

4

0 回答 0