Mam gdzieś struct:Jak uzyskać typ zwrotu przeciążonej metody w C++?
struct A {
ComplicatedType1 f();
ComplicatedType2 f(int);
};
Chcę uzyskać return-typ f()
użyciu kompilacji pomocników. Próbuję std::result_of<>
:
using Type = std::result_of<decltype(&A::f)()>::type;
Ale kompilator daje mi wystarczającą błąd: „odniesienie do funkcji przeciążonej nie może być rozwiązany”.
Więc idę do SO i widzę this akceptowaną i przegłosowaną odpowiedź, która sugeruje, że należy wprowadzić static_cast<ComplicatedType1 (A::*)()>(&A::f)
- ale nie mam w tym momencie ComplicatedType1
. Utknąłem w rekursji.
Jak zdobyć ComplicatedType1
wewnątrz mojego using
ekspresji przy minimum kodu?
Czy to może być praca dla osób decltype? –
Nie możesz użyć odliczenia ze słowem kluczowym 'auto'? –
'std :: result_of' oczekuje jako argument szablonu a * type *, ale' & A :: f' nie jest typem; nie jest też '(& A :: f)()'. Ponadto 'result_of' jest specjalnym narzędziem przed C++ 11 i zastąpione przez' decltype' dla większości aplikacji: 'decltype (f())' – dyp