std :: result_of没有编译

时间:2015-08-02 16:27:17

标签: c++ c++11 result-of

我尝试使用std::result_of来确定可调用对象的返回类型:

template <typename T>
std::result_of<T()>::type CallableWrapper(T callableObj) {
    return callableObj();
}

代码中的其他地方:

auto i = CallableWrapper([](){return 1;});

此代码由于某种原因无法编译。如果有人告诉我原因,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

应该可以使用尾随返回类型和decltype,例如

template<typename T>
auto CallableWrapper(T callableObj) -> decltype(std::declval<T>()())
{
    ...
}