generowanie funktora z typu wskaźnika funkcji członka

Próbuję uprościć (przezmake_fn()) generowanie funktorów, które przetwarzają parametry (przezwrap()) dla funkcji członka arityn.
Generowanie funktorów w zasadzie działa, ale do tej pory tylko przez jawne określenie typów parametrów dla funkcji składowej.
Teraz chciałbym wygenerować poprawny funktor z obsługiwanego typu funkcji członka:

struct X {};

template<class C, typename T1, bool (C::*F)(T1)>
inline // there are more for T1..TN
bool wrap(C* c, X x) 
{
    return (c->*F)(process<T1>(x));
}

template<class C, typename T1, bool (C::*F)(T1)> 
inline // there are more for T1..TN
boost::function<bool (C*, X)> make_fn(F f) // <- problem here, F is not a type
{
    return boost::bind(&wrap<C, T1, F>, _1, _2);
}

Z tym jednak vc ++ i g ++ nie widząF jako typ parametrumake_fn(). Muszę tęsknić za czymś oczywistym i czuję się nieco ślepy.

Pomysł polegał na tym, że powinien działać tak:

struct A 
{
    bool f1(bool) { return true; }
};

void test()
{
    A a;
    X x;
    make_fn(&A::f1)(&a, x);
}

Jakieś pomysły, jak to zrobić?

Tło:
Mam stały interfejs, który po uproszczeniu wygląda tak:

bool invoke(C* c, const char* const functionName, int argCount, X* args);

X jest typem wariantu, który muszę przekonwertować na pewne typy zaplecza (int, std :: string, ...).
Aby obsłużyć te wywołania, mam mapę funktorów, które są wyszukiwane według nazwy i mapują te wywołania na funkcje składowe niektórych instancji.
Celem owijania jest uniknięcie ręcznych konwersji i zamiast tego generowanie funktorów, które wykonują konwersję dla mnie lubthrow. Pracuję z rozwiązaniem opartym na makro, ale to rozwiązanie wymaga jawnego określenia typów i liczby parametrów.
Mam nadzieję, że dzięki rozdzielczości przeciążenia funkcji wygeneruję prawidłowy funktor konwertujący niejawnie z podpisu funkcji składowej.

questionAnswers(1)

yourAnswerToTheQuestion