0
我經常發現自己正在處理模板並在所述模板中返回函數的值。我總是最終的東西是這樣的:模板參數類返回的函數調用類型
template<typename Data>
auto foo(const Data& d) ->
typename std::decay<decltype(reinterpret_cast<const Data*>(0)->operator()(0, 0))>::type
{
typedef typename std::decay<decltype(reinterpret_cast<const Data*>(0)->operator()(0, 0))>::type return_t;
...
}
雖然這個工作,它是醜陋的,而不是真的很明顯是我從快速查找想要的。是否有更可讀,更少的'hackish'方法來獲得「在模板參數上調用此方法的返回類型」?
你確定要衰減類型,還是可以與'operator()'聲明的相同? – 2014-10-16 10:58:55
在這種情況下,我想腐爛它。即使'operator()'返回一個'const T'我想返回一個'T',因爲我在這個特定情況下通過插值創建了新的值。 – 2014-10-16 11:00:09
可以將'Data'作爲一個函數,或者它必須與'operator()'類一起使用? – 2014-10-16 11:06:12