编译如下:
[]{};
这也是:
[]() mutable {};
但是使用此代码,编译器会向我抛出错误消息:
[] mutable {};
^~~~~~~
error: lambda requires '()' before 'mutable'
有什么特别的原因吗?
最佳答案
这只是语法在标准中编写方式的结果。我不知道这是否是疏忽。
Lambda表达式以Lambda引入程序(方括号)开头,后跟可选的Lambda声明符。
lambda声明符包含参数列表,可变变量,属性,异常说明符和返回类型。所有这些都是可选的,参数列表除外。因此,如果根本没有lambda声明符,则必须在括号中。
这就是为什么您不能只具有mutable关键字的原因。
关于c++ - 为什么[] mutable {}无法编译?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40549722/