c++ - std::result_of 不编译

标签 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;});

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

最佳答案

尾随返回类型和decltype应该是可能的,比如

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

关于c++ - std::result_of 不编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31773994/

相关文章:

c++ - 避免重复 SFINAE 区分无效和非无效返回类型

c++ - 字符数组的替代品

C++字符串类

c++将 vector 规范化为 double ?

c++ - vector 容器和 unique_ptr

c++ - 返回值是模板类型时如何使用std::result_of?

c++ - 将 boost python 扩展放在包内

c++ - SFINAE 显式工作但不隐式工作

c++ - printf int 到带有左填充空格的 char 数组

c++ - 推断成员函数的返回类型