[英]Are there reasons for keeping fully specialized template in the header?
如果我有一个完全专业化的模板函数,例如:
// This stay in the header
template<typename X>
void foo(x b);
// This goes into the source file - any drawbacks?
template<>
void foo(Bar b) {
...
}
是否有理由将其保留在标题中而不是源文件中? 我想将这些保留在源文件中,以减少编译时间(这些专用函数可能会变得非常大,而且它们会在头文件中提取很多依赖项),但我想知道是否有任何权衡将它们放入源文件中。
对于完全专业化的模板,声明仍然应该在头文件中(所以编译器知道它不使用主模板):
template<> void foo(Bar b);
但定义可以进入 cpp 文件(或留在标题中):
template<>
void foo(Bar b) {
//...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.