テンプレート引数は、メンバー関数へのポインターである可能性があることが知られています。
だから私は書くことができます:
struct Bar
{
int fun(float x);
};
template <int (Bar::*FUN)(float)>
struct Foo
{ /*...*/ };
typedef Foo<&Bar::fun> FooBar;
Bar
しかし、型自体をテンプレート引数にしたい場合はどうなりますか?
template <typename B, int (B::*FUN)(float)>
struct Foo
{ /*...*/ };
typedef Foo<Bar, &Bar::fun> FooBar;
さて、使うときはBar
二度書く必要があります!
私の質問は、コンパイラにクラスタイプを自動的に推測させる方法はありますか?
目的は、これが正しく機能することです。
typedef Foo<&Bar::fun> FooBar;
typedef Foo<&Moo::fun> FooMoo;