【发布时间】:2014-12-05 22:43:05
【问题描述】:
我有一个模板
template<size_t N>
class Foo {
int bar(int a) {
if (N == 0)
return 0;
return a / N;
}
}
当我用 0 实例化它时
Foo<0> bar;
gcc 太聪明了,编译时会报告被零除
我试过了
class Foo<size_t N> {
template<size_t M>
int bar(int a) {
return a / N;
}
template<>
int bar<0>(int a) {
return 0;
}
};
但这给了我错误:
错误:非命名空间范围'class Foo'中的显式特化 错误:主模板声明中的模板 ID 'bar'
有什么想法可以解决/解决这个问题吗?
【问题讨论】: