Ho un qualche struct:Come ottenere il tipo di ritorno del metodo sovraccarico in C++?
struct A {
ComplicatedType1 f();
ComplicatedType2 f(int);
};
voglio ottenere il return-tipo di f()
utilizzare in fase di compilazione aiutanti. Sto cercando std::result_of<>
:
using Type = std::result_of<decltype(&A::f)()>::type;
Ma il compilatore mi dà un errore ragionevole: "riferimento alla funzione di sovraccarico non può essere risolto".
Così ho andare a SO e vedere this accettato e upvoted risposta, che suggeriscono di fare un static_cast<ComplicatedType1 (A::*)()>(&A::f)
- ma io non avere un ComplicatedType1
a questo punto. Sono bloccato in una ricorsione.
Come arrivare ComplicatedType1
dentro la mia using
espressione con un minimo di codice?
Potrebbe essere un lavoro per decltype? –
Non puoi usare la deduzione di tipo con la parola chiave 'auto'? –
'std :: result_of' si aspetta come argomento template un * tipo *, ma' & A :: f' non è un tipo; nessuno dei due è '(& A :: f)()'. Inoltre, 'result_of' è uno speciale strumento pre-C++ 11 e sostituito da' decltype' per la maggior parte delle applicazioni: 'decltype (f())' – dyp