模板和typedef

时间:2011-06-30 17:57:00

标签: c++ templates typedef

我有一些类:

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

现在,我想专门化typename并使用typedef提供一个新类型。因此,我在C++ typedef for partial templates

处找到了StackOverflow的答案

我这样做了:

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

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

感谢。

2 个答案:

答案 0 :(得分:4)

下一个标准支持模板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;
}

答案 1 :(得分:2)

你提到的答案是:

  

如果你有一个C ++ 0x / C ++ 1x编译器

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