我试图使用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>()())
{
...
}