12/02/13 14:12:45.40
テンプレート関数xxxにfuncを渡すときには自動的にTとUが設定されるのに
テンプレートクラスyyyにfuncを渡すときには、自分でTとUを指定しなければなりません。
この違いはなんなのでしょうか?
環境は gcc version 4.6.1 です。
template<class T, class U>
void xxx( T (*func)(U) )
{ }
template<class T, class U>
class yyy
{
private:
T (*f_)(U);
public:
yyy( T (*f)(U) ): f_(f){ }
};
double func( int v ){ return (double)v*0.1; }
int main( )
{
xxx( func );
//yyy obj( &func ); //templateの型を指定しないとコンパイルエラー
yyy<double,int> obj;
return 0;
}