Created on 2016-04-18.00:00:00 last changed 117 months ago
Consider the following example:
union A {
constexpr A(int) : x(++x) { }
int x;
char* y;
};
union B {
A a = 5;
};
int arr[B().a.x];
Value-initialization of the object created by B() zero-initializes the object (9.5 [dcl.init] bullet 8.2), which should mean that the ++x in the mem-initilizer for A operates on a zero-initialized object, but current implementations reject this code as non-constant. It is not clear what in the current wording justifies this treatment.
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2016-04-18 00:00:00 | admin | create | |