mutable

我以为我一直都不会用到 C++ 中这个关键字。

最近还真的被我用到了。

我碰到了Xcode给我这样一个提示:

1
Cannot assign to a variable captured by copy in a non-mutable lambda

网上搜了下:因为默认情况下,Lambda 无法修改捕获列表中的变量。

关于Lambda的介绍:


  • [ 捕获列表 ] ( 形参数列表 ) mutable(可选) 异常属性 -> 返回值类型 { 函数体 } (1)

  • [ capture-list ] ( params ) -> ret { body } (2)

  • [ capture-list ] ( params ) { body } (3)

  • [ capture-list ] { body } (4)

(1)为完整的形式,包含变量捕获列表、形参列表、可变属性(可选)和返回值类型等。

(2)省略了mutable,表示Lambda不能修改捕获的变量。

(3)Lambda的返回值类型如果可以由函数体中的实际返回值推导出,可以省略。

(4)如果没有形参,可以省略圆括号。