templates and typedef

templates and typedef

本文关键字:typedef and templates      更新时间:2023-10-16

我有一些类,比如:

 template<int DIMENSION, typename T> Vector { ... }  

现在,我想专门化typename,并使用typedef提供一个新的类型。因此,我在C++typedef的StackOverflow上为部分模板找到了答案

我这样做了:

template < int DIMENSION> using VectorDouble= Vector<DIMENSION, double>;

这不会编译(错误C2988:无法识别的模板声明/定义)。这是因为我的编译器(Visual Studio 2008)不允许,还是我遗漏了什么?

谢谢。

模板typedef在下一个标准中得到支持-也就是说,基本上只有真正的、真正的真正的新编译器支持它。即使是最新的VS也不支持它,因为它还不够新,这就是C++0x的新之处。

在C++03中,通常使用一个结构。

template<int dimension> struct vector_double {
    typedef Vector<dimension, double> type;
};

现在它可以像一样访问

int main() {
    vector_double<5>::type vec_double;
}

你提到的答案是:

如果您有C++0x/C++1x编译器

C++1x还不是最新的,所以大多数编译器都不支持它的功能。特别是,VC++9.0(VS2008)几乎不支持它们。VC++10(VS2010)确实支持一些功能,但我不知道您是否需要这些功能。