7
我有一個結構的地方:如何在C++中獲取返回類型的重載方法?
struct A {
ComplicatedType1 f();
ComplicatedType2 f(int);
};
我想用編譯時的助手獲得回報型f()
。我想std::result_of<>
:
using Type = std::result_of<decltype(&A::f)()>::type;
但是,編譯器給我一個合理的錯誤:「引用重載函數無法解析」。
所以我去SO看到this接受和upvoted的答案,這表明建立一個static_cast<ComplicatedType1 (A::*)()>(&A::f)
- 但我沒有ComplicatedType1
在這一點上。我被困在遞歸中。
如何獲得ComplicatedType1
我using
表達式內用最少的代碼?
這可能是decltype的工作嗎? –
你不能用'auto'關鍵字使用類型扣除嗎? –
'std :: result_of'需要一個* type *作爲它的模板參數,但'&A :: f'不是一個類型; '(&A :: f)()'也不是。此外,'result_of'是一個特殊的pre-C++ 11工具,對於大多數應用程序來說,它被'decltype'所取代:'decltype(f())' – dyp