C++ 23:移除lambda表达式中非必须的括号()

在lambda表达式中,如果没有参数声明,括号可以省去。

auto HelloWorld = [](){std::cout<<"Hello, World"<<std::endl;};

可写成

auto HelloWorld = []{std::cout<<"Hello, World"<<std::endl;};

可是当我们添加对函数的修饰符时,例如mutable

std::string s1 = "abc";
auto withParen = [s1 = std::move(s1)] () mutable {
  s1 += "d";
  std::cout << s1 << '\n'; 
};

这样是正确的。

std::string s2 = "abc";
auto noSean = [s2 = std::move(s2)] mutable { // Currently a syntax error.
  s2 += "d";
  std::cout << s2 << '\n'; 
};

是错误的。

C++ 23 会解决这个问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容