【发布时间】:2010-07-16 16:16:01
【问题描述】:
假设我有一个文件 alpha.h:
class Alpha {
public:
template<typename T> void foo();
};
template<> void Alpha::foo<int>() {}
template<> void Alpha::foo<float>() {}
如果我在多个 cpp 文件中包含 alpha.h 并使用 GCC 4.4 编译,它会抱怨在多个目标文件中有多个 foo<int> 和 foo<float> 定义。对我来说很有意义,所以我将最后两行更改为:
template<> extern void Alpha::foo<int>() {}
template<> extern void Alpha::foo<float>() {}
但是 GCC 说:
显式模板特化 不能有存储类
好的...那么我应该如何正确执行此操作?我担心 C++ 不允许我首先尝试做的事情,在这种情况下是否有一个好的习语可以完成同样的事情?
【问题讨论】:
标签: c++ templates template-specialization