// RUN: %clang_cc1 -std=c++23 -fms-extensions -fsyntax-only -verify %s
// expected-no-diagnostics

struct Wrapper {
  template <typename F> Wrapper(F) {}
};

void omitted_parameter_list() {
  Wrapper a([] mutable {});
  Wrapper b([] constexpr {});
  Wrapper c([] consteval {});
  Wrapper d([] static {});
  Wrapper e([] mutable constexpr noexcept -> int { return 1; });
  Wrapper f([] mutable [[]] {});
}

void named_capture() {
  int x = 0;
  Wrapper a([x] mutable { return x; });
}

void microsoft_attribute_controls() {
  Wrapper helpstring([helpstring("h")] int);
  Wrapper adjacent_lists([library_block][idl_quote("x")] int);
}
