aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/cpp2a/desig16.C
blob: 3edb68d24a4db0c94b7223dc95d2ee824981277d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// 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" }
}