Предполагая, что функция (которая может быть либо глобальной функцией, либо функцией-членом) перегружена только по ее параметрам (так что ее перегрузки всегда будут полностью const или неконстантными) , Есть ли способ написать шаблон, который будет выбирать адрес перегрузки в соответствии с указанным параметром? Например:Найти только адрес перегрузки по его параметрам
struct Foo {
double bar(double n, double m);
int bar(int n, int m);
};
auto addressDouble = find_overload<&Foo::bar, double, double>::address;
auto addressInt = find_overload<&Foo::bar, int, int>::address;
Интересный ответ я нашел here, но, к сожалению, это дело только с переадресацией вызова на правую перегрузку, а не на самом деле выборок адреса перегрузки, так что он может быть использован позже.
Последнее примечание: идеальное решение должно работать над выпущенной версией Clang. Помимо этого требования, можно использовать любые доступные функции C++ 1z и ниже.
_which может быть либо глобальной функцией, либо функцией-членом. В ответе не рассматриваются требования к свободным функциям. – skypjack
@skypjack Да, это не касается бесплатных функций, но главная цель здесь - предоставить основную идею о том, как ее можно реализовать. OP сам может изменить и расширить предоставленные решения в соответствии с его требованиями. – MRB
Я не вижу причин для голосования. Лучше дать объяснение для голосов вниз. – MRB