Скажем, у меня есть какая-то произвольная сложная перегруженная функция:
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.
Я не знаю, где я буду использовать такую вещь - мне просто интересно, если это возможно.