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

履歴 編集

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

概要

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

関連項目

参照