C++11用于计算函数对象返回类型的统一方法

时间:2021-09-28 08:12:53

C++11用于计算函数对象返回类型的统一方法

  模板 std::result_of 被TR1 引进且被 C++11 所采纳,可允许我们决定和使用一个仿函数其回返值的类别。底下,CalculusVer2 对象使用std::result_of 对象来推导其仿函数的回返值类别:

  C++11用于计算函数对象返回类型的统一方法

  如此一来,在实体化 CalculusVer2<Confused> 其仿函数时,不会有类别转换,警告或是错误发生。

  模板 std::result_of 在 TR1 和 C++11 有一点不同。TR1 的版本允许实现在特殊情况下,可以无法决定一个函数调用其回返值类别。然而,因为 C++11支持了decltype,实现被要求在所有情况下,皆能计算出回返值类别。

参考:

http://zh.wikipedia.org/wiki/C++0x#.E7.94.A8.E4.BA.8E.E8.AE.A1.E7.AE.97.E5.87.BD.E6.95.B0.E5.AF.B9.E8.B1.A1.E8.BF.94.E5.9B.9E.E7.B1.BB.E5.9E.8B.E7.9A.84.E7.BB.9F.E4.B8.80.E6.96.B9.E6.B3.95