関数テンプレートを練習するためだけに考えた次のコードがあります。
#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
クラス テンプレートはよく理解していますが、関数テンプレートについてはまだ混乱しています。