繁体   English   中英

是否有理由在标题中保留完全专业化的模板?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM