c – 为什么[] mutable {}无法编译?

前端之家收集整理的这篇文章主要介绍了c – 为什么[] mutable {}无法编译?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这编译:
[]{};

这也是:

[]() mutable {};

但是使用这段代码,编译器会向我抛出错误消息:

[] mutable {};
   ^~~~~~~
error: lambda requires '()' before 'mutable'

有什么特别的原因吗?

解决方法

这只是语法在标准中编写方式的结果.我不知道这是否是疏忽.

lambda表达式以lambda导入器(括号)开头,后跟可选的lambda声明符.

lambda声明符包含参数列表,mutable,attributes,exception specifier和return type.除参数列表外,所有这些都是可选的.因此,如果存在lambda声明符,则括号必须在那里.

这就是为什么你不仅可以拥有mutable关键字.

原文链接:/c/118067.html

猜你在找的C&C++相关文章