Viewing file: constexpr-init7.C (1.11 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
// PR c++/91353 - P1331R2: Allow trivial default init in constexpr contexts. // { dg-do compile { target c++20 } }
struct S { int a = 1; constexpr S() = default; };
constexpr S s;
union U { int a = 1; constexpr U() = default; };
constexpr U u;
struct S2 { int a; constexpr S2() = default; };
constexpr S2 s2; // { dg-error "uninitialized .const s2." }
union U2 { int a; constexpr U2() = default; };
constexpr U2 u2; // { dg-error "uninitialized .const u2." }
struct S3 { // FIXME if it's anonymous union, we don't give the error below union { int a; } u; constexpr S3() = default; };
constexpr S3 s3; // { dg-error "uninitialized .const s3." }
struct S4 { // FIXME if it's anonymous union, we don't give the error below union { int n; } u; constexpr S4() = default; };
constexpr S4 s4; // { dg-error "uninitialized .const s4." }
struct S5 { union { int n = 0; }; // FIXME if it's anonymous union, we don't give the error below union { int m; } u; constexpr S5() = default; };
constexpr S5 s5; // { dg-error "uninitialized .const s5.|not a constant expression" }
|