这编译:
[]{};
这也是:
[]() mutable {};
[] mutable {}; ^~~~~~~ error: lambda requires '()' before 'mutable'
有什么特别的原因吗?
解决方法
这只是语法在标准中编写方式的结果.我不知道这是否是疏忽.
lambda表达式以lambda导入器(括号)开头,后跟可选的lambda声明符.
lambda声明符包含参数列表,mutable,attributes,exception specifier和return type.除参数列表外,所有这些都是可选的.因此,如果存在lambda声明符,则括号必须在那里.
这就是为什么你不仅可以拥有mutable关键字.