Dedução de argumento de modelo para ponteiros de função de membro

Sabe-se que os argumentos de modelo podem ser ponteiros para funções de membro.

Então eu posso escrever:

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

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

typedef Foo<&Bar::fun> FooBar;

Mas e se eu quiser oBar digite-se para ser um argumento de modelo:

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

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

Agora, quando eu uso, eu tenho que escreverBar duas vezes!

Minha pergunta é: Existe uma maneira de forçar o compilador a deduzir o tipo de classe automaticamente?

O objetivo é que isso funcione apenas:

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

questionAnswers(2)

yourAnswerToTheQuestion