3
我有以下代码,我只是为了实践函数模板而构想的。函数模板的隐式实例化
#include <iostream>
template <typename T>
T fun(const T &t) { return t; }
struct A {
int dataf;
A(int a) : dataf(a) { std::cout << "birth\n"; }
friend A fun(const A &);
};
int main(){
A a(5);
fun(a);
return 0;
}
虽然我得到以下错误:
code.cc:(.text+0x32): undefined reference to `fun(A const&)'
collect2: ld returned 1 exit status
我的理解以及类模板,但我仍然感到困惑的函数模板。
+1为“或”。第二个匹配原始意图。 – Angew
如果你只是增加了两者之间的区别,以及它们与隐式和显式专业化思想之间的关系如何,我会很感激。谢谢。 – yauser
此外,我认为给定模板声明,编译器可以从调用的上下文中猜测专业化,我不必提供函数源自模板的任何信息。友谊宣言是否强化了特殊待遇,还是我混淆了事物? – yauser