给定类型TArgumentTFunctor,如何找出使用TFunctor类型的参数调用TArgument实例的结果类型?

这是我笨拙,肮脏的解决方案:

template <class TFunctor, typename TArgument>
class ReturnValue
{
public:
     typedef decltype(functor_(arguent_)) Type;

private:
     static TFunctor functor_;
     static TArgument arguent_;
}


但要使其正常工作,TFunctorTArgument都必须默认可构造。

有没有更好的办法?

最佳答案

typedef decltype(std::declval<TFunctor>()(std::declval<TArgument>())) Type;


或使用std::result_of

typedef typename std::result_of<TFunctor(TArgument)>::type Type;

08-16 02:12