尾随返回类型使用 decltype 和可变参数模板函数
此查询旨在构造一个基本加法器,用于计算任意数量的总和具有适当返回类型的参数。然而,当前的实现存在多个参数的局限性。本文调查了根本问题并探讨了潜在的解决方法。
初始实现利用尾随返回类型语法来简化求和函数。但是,对于超过两个的参数,会出现编译错误,表明该函数未定义。此异常源于以下事实:可变参数函数模板是在指定其返回类型之后声明的。因此,decltype() 表达式无法引用可变参数函数模板本身。
虽然 C 0x 允许在 ->decltype(expr) 部分中进行递归调用,但它可能不支持像这样的特定场景。为了解决这个问题,引入了自定义特征类 sum_type 作为解决方法。它可以用类型名 sum_type
但是,初始实现返回 decltype((a b) c) 而不是预期的decltype(a (b c)).为了纠正这个问题,可以修改 sum_type 专门化以确保所需的操作顺序,从而得到最终的解决方案。
以上是如何使用可变参数模板函数求和来实现尾随返回类型?的详细内容。更多信息请关注PHP中文网其他相关文章!