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