blob: e6727f6cbe5912514a3728be37ce793e3b908e81 [file] [log] [blame]
// RUN: %clang_cc1 -verify -std=c2y -Wall -pedantic -Wno-gnu-folding-constant %s
// RUN: %clang_cc1 -verify -std=c23 -Wall -pedantic -Wno-gnu-folding-constant %s
/* WG14 N3451: Yes
* Initialization of anonymous structures and unions
*
* This paper allows initialization of anonymous structure and union members
* within the containing object.
*/
// expected-no-diagnostics
constexpr struct {
int a : 10;
int : 12;
long b;
} s = { 1, 2 };
static_assert(s.a == 1 && s.b == 2);
constexpr union {
int : 16;
char c;
} u = {3};
static_assert(u.c == 3);
constexpr struct {
union {
float a;
int b;
void *p;
};
char c;
} t = {{.b = 1}, 2};
static_assert(t.b == 1 && t.c == 2);
constexpr struct {
union {
float a;
int b;
void *p;
};
char c;
} v = {.b = 1, 2};
static_assert(v.b == 1 && v.c == 2);