decltype для перегруженной функции-члена [duplicate]

На этот вопрос уже есть ответ здесь:

Устранить неоднозначность перегруженного указателя на функцию-член в качестве параметра шаблона 1 ответ

У меня есть этот код:

struct Foo 
{
    int print(int a, double b);
    int print(int a);
    void print();
    void print(int a, int b, int c);

    void other();
};

я могу позвонить

decltype(&Foo::other)

но звонит

decltype(&Foo::print)

покончить с ошибкой, которая мне понятна.

Но как я могу более точно указать, какой из четырехprint методы, я хочу разрешитьdecltype?

Я хочу в дальнейшем использовать это в

template <class MT>
struct method_info;

template <class T, class Res, class... Args>
struct method_info<Res(T::*)(Args...)>
{
    typedef std::tuple<Args&&...> args_tuple;
    typedef T ClassType;
    typedef Res RetVal; 
};



template <class MethodType>
void func() {
   typedef method_info<MethodType> MethodInfo;
   .....
}

func<decltype(&Foo::other)>();
....

Ответы на вопрос(2)

Ваш ответ на вопрос