wir ausgewählt sagen, dass ich etwas willkürlich kompliziert überladene Funktion haben:Bestimmung, die wurde überlasten
template <class T> void foo(T&&);
template <class T> void foo(T*);
void foo(int);
I, für einen bestimmten Ausdruck, diefoo()
wird aufgerufen, wissen wollen. Zum Beispiel einige Makro WHICH_OVERLOAD
gegeben:
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 nutzen würde - ich bin nur neugierig, ob es möglich ist.
Beachten Sie, dass der Typ Überlastung nicht genug ist btw für unterscheiden. – Jarod42
Ich glaube nicht, dass das möglich ist. Dies ist sehr ähnlich zu den Aufrufeigenschaften der Bibliotheksgrundlagen TS, von denen bekannt ist, dass sie die Implementierung von Compilermagie erfordern. –
@ T.C. Ah, ja, das habe ich mir gedacht. [Dieser] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3866.html)? – Barry