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