templates and typedef
templates and typedef
我有一些类,比如:
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)确实支持一些功能,但我不知道您是否需要这些功能。
相关文章:
- C++:TypeDef使用元组
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 有没有一种方法可以通过"typedef"为重新定义的基本类型定义特征和强制转换运算符
- 为什么C++逐位AND运算符在不同大小的操作数中表现为这样
- 为什么 Clang 不允许"and"作为函数名称?
- 位阵列上的快速AND运算
- 为什么在使用typedef时类推导指南会失败
- 是否可以在 C++03 中定义'move-and-swap idiom'等效项
- 尝试根据类中 typedef 的存在来专门化模板函数
- 如何重新定义MPI_FLOAT,MPI_DOUBLE以 typedef 的方式
- typedef 枚举和枚举类有什么区别?
- BoostPython and CMake
- OpenSSL BIO and SSL_read
- 在类模板中使用 typedef 时出错
- 模板类中的 typedef 语句
- LPWSTR typedef and macro?
- Mixing typedef and CRTP?
- typedef typename and Dependent scope
- const typedef; in C and C++
- templates and typedef