我尝试使用std::result_of
来确定可调用对象的返回类型:
template <typename T>
std::result_of<T()>::type CallableWrapper(T callableObj) {
return callableObj();
}
代码中的其他地方:
auto i = CallableWrapper([](){return 1;});
此代码由于某种原因无法编译。如果有人告诉我原因,我将不胜感激。
答案 0 :(得分:1)
应该可以使用尾随返回类型和decltype
,例如
template<typename T>
auto CallableWrapper(T callableObj) -> decltype(std::declval<T>()())
{
...
}