Mark Mitchell wrote:
The standard says that floating-point literals are only allowed in
integral constant expressions if they are immediately cast to an
integral or enumeration type. When I implemented checks for integral
constant-expressions, I failed to check this case. Remedied with the
attached patch.
The standard library fell afound of this rule in std_limits.h; that's
now fixed too.
Tested on x86_64-unknown-linux-gnu, applied on the mainline.
This seems to break libjava on i686-pc-linux-gnu:
./java/util/Hashtable.h:53: error: floating-point literal cannot appear in a con
stant-expression
The relevant line from
$BUILD_DIR/i686-pc-linux-gnu/libjava/java/util/Hashtable.h is:
static const jfloat DEFAULT_LOAD_FACTOR = 0x1.800000p-1f;