上述の文脈の流れで、STLのforeachなど、動作の述語引数として、関数オブジェクト、関数ポインタともに受け取るような関数は、 template< class T > void DoSomething( T func ) { int a, b; char* buff; .. func();// Tは引数なしで呼び出せる「何か」でさえあればよい //func( a ); //あるいは Tはintを引数にして呼べる「何か」でも //func( buff ); //あるいは Tはchar* を引数にして呼べる「何か」でもよい .. } という形で書かれるわけなのであり、T型が持つべきポリシーインタフェイスは、DoSomethingの作者が、上記のfunc()呼び出しの行をどう書くかだけできまる。気楽なものだ。この意味で、DoSomethingはホストクラスであり、T funcはポリシーであると