Re:C++14: floats, bits, and constant expressions
by satbyy on Monday March 28, 2016 @06:06AM
(#11373453)
Interestingly, g++ gives out a warning (correctly) when compiled with -O2, but not by default (-O0):
warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
So, you're right indeed.
... if no argument values exist such that an invocation of the function or constructor could be an evaluated subexpression of a core constant expression, the program is ill-formed; no diagnostic required.
clang seems to go the extra mile and produces a diagnostic.
Incidentally the pointer cast would violate C++'s aliasing rules and thus invoke undefined behavior.
P.S: The C++14 Standard is available here: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n429... (never mind the "draft" status)