Diciamo che ho una certa funzione in overload complicato arbitraria:Determinare quali sovraccarico è stato selezionato
template <class T> void foo(T&&);
template <class T> void foo(T*);
void foo(int);
Voglio sapere, per una data espressione, chefoo()
viene chiamato. Ad esempio, dato un certo macro WHICH_OVERLOAD
:
using T = WHICH_OVERLOAD(foo, 0); // T is void(*)(int);
using U = WHICH_OVERLOAD(foo, "hello"); // U is void(*)(const char*);
// etc.
non so dove vorrei usare una cosa del genere - Sono solo curioso di sapere se è possibile.
Nota che il tipo non è sufficiente per distinguere il sovraccarico btw. – Jarod42
Non penso sia possibile. Questo è molto simile ai fondamentali della libreria TS, i tratti del tipo di invocazione, e il secondo è noto per richiedere l'implementazione del magic del compilatore. –
@ T.C. Ah, sì, è quello che pensavo. [Questo] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3866.html)? – Barry