为什么C++ 14 Generic lambdas需要自动参数规范?

myW*_*SON 3 c++ lambda c++14

我看看Generic lambdas并且无法得到它 - 为什么要保留类型声明?为什么不 (x, y)呢?如果编译器供应商必须支持(auto a, auto b)是否有任何支持简单的问题(a, b)

Dan*_*rey 18

问题是您也可以省略参数的名称.如果编译器看到(a,b)ab也是有效的类型,应该是什么意思?(a /*dummy_a*/, b /*dummy_b*/)还是(auto a, auto b)?由于必须auto明确键入,它不再含糊不清.

  • @myWallJSON您无法访问此类参数,并且在需要lambda具有您无法控制的特定签名时需要此类功能.常用的一个地方是未命名的参数是`operator ++(int)`. (4认同)
  • @myWallJSON有两个原因:一致性(因为你不需要特殊的规则),因为对于某些函数,你只需要传递一个特殊类型的参数作为一种标志,你实际上并没有使用的值参数本身.在使用模板时特别有用,我想你可以在SO上找到很多例子. (4认同)