最終更新日時(UTC):
が更新

履歴 編集

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

このページは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

関連項目

参照