Szablonowe dedukcje argumentów dla wskaźników funkcji składowych

Wiadomo, że argumenty szablonu mogą być wskaźnikami do funkcji składowych.

Mogę więc napisać:

struct Bar
{
    int fun(float x);
};

template <int (Bar::*FUN)(float)>
struct Foo
{ /*...*/ };

typedef Foo<&Bar::fun> FooBar;

Ale co, jeśli chcęBar wpisz się jako argument szablonu:

template <typename B, int (B::*FUN)(float)>
struct Foo
{ /*...*/ };

typedef Foo<Bar, &Bar::fun> FooBar;

Teraz, kiedy go używam, muszę pisaćBar dwa razy!

Moje pytanie brzmi: czy istnieje sposób zmuszenia kompilatora do automatycznego wywnioskowania typu klasy?

Celem jest, aby to działało:

typedef Foo<&Bar::fun> FooBar;
typedef Foo<&Moo::fun> FooMoo;

questionAnswers(2)

yourAnswerToTheQuestion