[Bug c++/83428] Static initialization and struct with constexpr ctor
wolfgang.roehrl@gi-de.com
gcc-bugzilla@gcc.gnu.org
Mon Sep 10 11:49:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83428
--- Comment #5 from Wolfgang Roehrl <wolfgang.roehrl@gi-de.com> ---
Hello,
I just came back from holidays and I read your comments on my bug report. For
two reasons I still think that the compiler should not use dynamic
initialization for objX - at least not without any warning:
a) According to my understanding the Standard requests static initialization
for a class-type variable whose constexpr constructor is invoked with
constant expressions (cf. C++17 Standard, 6.6.2/2;); and it is additionally
required that all sub-objects of the variable can also be initialized
statically.
But I don't see that the Standard requests that the ctor definition has to
precede the variable definition in order to get static initialization.
b) The behaviour of the compiler ist not user-friendly:
A program may rely on the static initialization of an object - especially if
the object contains atomic variables. Now somebody may modify the programm
and move the constructor definition unintentionally behind the definiton of
the object. The program still compiles but the program behaviour has
changed silently and to fix this kind of bugs can be very time-consuming.
With kind regards,
W. Roehrl
More information about the Gcc-bugs
mailing list