// PR c++/95369
// { dg-do compile { target c++20 } }

struct S {
  unsigned a;
  unsigned b;
  constexpr S(unsigned _a, unsigned _b) noexcept: a{_a}, b{_b} { }
};

template<S s> struct X { };
void g(S);

struct Z {
  S s;
  Z() : s{.a = 1, .b = 2} { } // { dg-error "designated initializers|no matching function" }
};

S
f()
{
  X<{.a = 1, .b = 2}> x; // { dg-error "designated initializers" }
  S s{ .a = 1, .b = 2 }; // { dg-error "designated initializers|no matching function" }
  S s2 = { .a = 1, .b = 2 }; // { dg-error "designated initializers" }
  S s3 = S{ .a = 1, .b = 2 }; // { dg-error "designated initializers|no matching function" }
  g({.a = 1, .b = 2}); // { dg-error "designated initializers" }
  g(S{.a = 1, .b = 2}); // { dg-error "designated initializers|no matching function" }
  return {.a = 1, .b = 2}; // { dg-error "designated initializers" }
}