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)>();
....