【发布时间】:2011-05-31 10:23:00
【问题描述】:
struct Bar {
enum { Special = 4 };
};
template<class T, int K> struct Foo {};
template<class T> struct Foo<T,T::Special> {};
用法:
Foo<Bar> aa;
使用 gcc 4.1.2 编译失败
它抱怨使用 T::Special 对 Foo 进行部分特化。如果Special 是一个类,则解决方案将是它前面的类型名。枚举(或整数)是否有与之等效的东西?
【问题讨论】:
-
如果将 T::Special 替换为一个具体的整数(比如 99),它仍然无法在 g++ 4.4.0 下编译:'模板参数的数量错误(1,应该是 2) '.我意识到这是一个单独的问题,但编译器不应该接受这个吗?
标签: c++ templates enums template-specialization