美文网首页
C++ 23:移除lambda表达式中非必须的括号()

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

作者: fck_13 | 来源:发表于2021-06-23 00:28 被阅读0次

    在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 会解决这个问题。

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/obevyltx.html