【发布时间】:2012-01-09 13:06:51
【问题描述】:
在 C++ Primer Plus(2001,捷克语翻译)中,我发现了这些不同的模板特化语法:
函数模板
template <typename T> void foo(T);
专业化语法
void foo(int param); // 1
void foo<int>(int param); // 2
template <> void foo<int>(int param); // 3
template <> void foo(int param); // 4
template void foo(int param); // 5
谷歌搜索了一下,我只找到了 No.3 的例子。它们之间有什么区别(在调用、编译、使用方面)?其中一些是否已过时/已弃用?为什么不直接使用 No.1?
【问题讨论】:
-
这要么是一个糟糕的翻译,要么就是你弄错了。我建议你阅读更多关于模板和函数重载的区别。
-
通常使用(并考虑)术语“函数模板”是一个好主意,因为它强调它是一个模板,而不是一个函数,并且无论何时需要函数,您都可以'不使用模板(只是一个特化,因为那时那些是函数)。
标签: c++ template-specialization