c++ - 模板和类型定义

标签 c++ templates typedef

我有一些像这样的类:

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

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

我这样做了:

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

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

谢谢。

最佳答案

下一个标准支持模板类型定义——也就是说,基本上,只有真正、真正、真正的新编译器支持它。即使是最新的 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++ - 模板和类型定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6539011/

相关文章:

c++ - 在函数模板的声明部分中定义时,对任意类型属性的函数重载失败

c++ - 如何在线程循环内等待

c++ - 模板别名如何影响模板参数推导?

c - C 中关键字 struct 的放置

c - 如何在不复制代码的情况下创建不可转换的 C 类型?

c++ - 为什么具有相同名称但不同签名的多重继承函数不被视为重载函数?

python - 将 python 嵌入到我的应用程序中时出现内存泄漏

c++ - 为什么嵌套类型的基类不需要 `typename`?

javascript - 如何将字典从 Jinja2(使用 Python)传递给 Javascript?

objective-c - 这是对typedef枚举的滥用还是误用(与具有静态内容的UITableView一起使用)