【C++11用于计算函数对象返回类型的统一方法】
模板 std::result_of
被TR1 引进且被 C++11 所采纳,可允许我们决定和使用一个仿函数其回返值的类别。底下,CalculusVer2
对象使用std::result_of
对象来推导其仿函数的回返值类别:
如此一来,在实体化 CalculusVer2<Confused>
其仿函数时,不会有类别转换,警告或是错误发生。
模板 std::result_of
在 TR1 和 C++11 有一点不同。TR1 的版本允许实现在特殊情况下,可以无法决定一个函数调用其回返值类别。然而,因为 C++11支持了decltype,实现被要求在所有情况下,皆能计算出回返值类别。
参考: