We try to compile this testcase:
#include <math.h>
int main() {
float f1 = HUGE_VALF;
decltype(HUGE_VALF) *f2 = &f1;
}And get the following result
>icl samplelimits.cc
Intel(R) C++ Intel(R) 64 Compiler for applications running on IA-32, Version 16.
0 Build 20151021
Copyright (C) 1985-2015 Intel Corporation. All rights reserved.
samplelimits.cc
samplelimits.cc(4): warning #265: floating-point operation result is out of rang
e
float f1 = HUGE_VALF;
^
Microsoft (R) Incremental Linker Version 14.00.23506.0
Copyright (C) Microsoft Corporation. All rights reserved.
-out:samplelimits.exe
samplelimits.obj>Judging from the error-message and the succeeding "decltype", HUGE_VALF has type float, but still, intel reports that "floating-point operand result is out of range". Same happens for NAN (with which it complains *twice* for the same line of code).
We use MSVC2015 Update 1 and the intel compiler version as specified in the output above.