First thing first, there is a ticket open for this #04233591.
So here is the story:
We have been using Intel C++ (2017.6.256) hosted on a CentOS 6.8 for 2 years.
But recently, after I build gcc 9.1.0 and install it to /usr/local/bin, all C++ code compilation using icpc starts to error out,
it seems the icpc automatically switches to use the gcc 9.1 header located in usr/local/include/c++/9.1.0/ if /usr/local/bin/gcc and /usr/local/bin/g++ exist.
Here is a typical error:
/opt/intel/compilers_and_libraries_2017.6.256/linux/bin/intel64/icpc -I/Ydir/savesets/v2020/s -I. -I/Ydir/savesets/v2020/g/clib/python/include -c -fPIC -DGT_DOUBLE_PRECISION -DGTDOUBLE -D_UNIX -DAUTOLIONGT -DNEW_FEATURES -I/Ydir/savesets/v2020/s/usercode/C/UserCodeCControls/include -O2 -g -Dlinux -D_ALL_UNIX_ -o COMMON/obj/MetricAreaDensity.o /Ydir/savesets/v2020/s/autolion/src/unit/MetricAreaDensity.cpp
In file included from /usr/local/include/c++/9.1.0/bits/move.h(55),
/usr/local/include/c++/9.1.0/type_traits(1060): error: identifier "__is_assignable" is undefined
: public __bool_constant<__is_assignable(_Tp, _Up)>
On the hosting linux box, /usr/local in not in any path (intentionally). But somehow, when gcc/g++ 9.1 is installed in /usr/local/bin, the icpc seems to pick up the header automatically. Removing the gcc/g++ from /usr/local/bin will fix the error right away.
So this is very strange error. Any clue/suggestion.