Kyl*_*yle 5 c++ templates template-specialization
假设我有一个alpha.h文件:
class Alpha {
public:
template<typename T> void foo();
};
template<> void Alpha::foo<int>() {}
template<> void Alpha::foo<float>() {}
Run Code Online (Sandbox Code Playgroud)
如果我包括多个CPP文件alpha.h与GCC 4.4编译时,报告说有多种定义foo<int>,并foo<float>在多个目标文件.对我有意义,所以我将最后两行更改为:
template<> extern void Alpha::foo<int>() {}
template<> extern void Alpha::foo<float>() {}
Run Code Online (Sandbox Code Playgroud)
但GCC说:
显式模板专门化不能有存储类
好的......所以我该如何正确地做到这一点?我担心C++不会允许我首先尝试做的事情,在这种情况下是否有一个很好的成语可以完成同样的事情?
Any*_*orn 10
使用内联关键字
template<> inline void Alpha::foo<int>() {}
Run Code Online (Sandbox Code Playgroud)
或者,在单独的cpp文件中提供实现
您可以转发声明以及内联选项:
// .h
template<> void Alpha::foo<int>();
//.cpp
template<> void Alpha::foo<int>() {}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2936 次 |
| 最近记录: |