Определение того, какая перегрузка была выбрана
Допустим, у меня есть произвольная сложная перегруженная функция:
template <class T> void foo(T&& );
template <class T> void foo(T* );
void foo(int );
Я хочу знать, для данного выражения,который foo()
вызывается. Например, учитывая некоторый макросWHICH_OVERLOAD
:
using T = WHICH_OVERLOAD(foo, 0); // T is void(*)(int);
using U = WHICH_OVERLOAD(foo, "hello"); // U is void(*)(const char*);
// etc.
Я не знаю, где бы я использовал такую вещь - мне просто любопытно, если это возможно.