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