Skip to content

Latest commit

 

History

History
41 lines (28 loc) · 1.41 KB

down_with_lambda_parens.md

File metadata and controls

41 lines (28 loc) · 1.41 KB

ラムダ式で()を省略できる条件を緩和 [P1102R2]

  • cpp23[meta cpp]

このページはC++23に採用された言語機能の変更を解説しています。

のちのC++規格でさらに変更される場合があるため関連項目を参照してください。

概要

C++23では、ラムダ式のパラメータリストが空であれば、以下の要素を含む場合であってもパラメータリストの () を省略できる。

  • constexpr
  • static
  • mutable
  • consteval
  • noexcept
  • 属性 (C++23時点でここに指定できる標準属性なし)
  • 後置戻り値型
  • requires
auto f1 = [b = std::move(a)] () { … }; // C++20 OK, C++23 OK
auto f2 = [b = std::move(a)] { … };    // C++20 OK, C++23 OK

auto f3 = [b = std::move(a)] () mutable { … }; // C++20 OK, C++23 OK
auto f4 = [b = std::move(a)] mutable { … };    // C++20 NG, C++23 OK

auto f5 = [] constexpr mutable noexcept -> bool { return true; }; // C++23 OK

参照