Bestimmen, welche Überlastung ausgewählt wurde
Nehmen wir an, ich habe eine willkürlich komplizierte überladene Funktion:
template <class T> void foo(T&& );
template <class T> void foo(T* );
void foo(int );
Ich möchte für einen bestimmten Ausdruck wissen,welch foo()
wird gerufen. Zum Beispiel ein Makro @ gegebWHICH_OVERLOAD
:
using T = WHICH_OVERLOAD(foo, 0); // T is void(*)(int);
using U = WHICH_OVERLOAD(foo, "hello"); // U is void(*)(const char*);
// etc.
Ich weiß nicht, wo ich so etwas verwenden würde - ich bin nur neugierig, ob es möglich ist.