Closed jeking3 closed 5 years ago
The new file in Boost-CI: https://github.com/boostorg/boost-ci/blob/master/ci/travis/intelicc.sh
The pull request in Boost.Uuid (my fork): https://github.com/jeking3/uuid/pull/19
The version of Intel ICC provided by Boost.Config:
__ICC =1900
__INTEL_COMPILER =1900
__INTEL_COMPILER_BUILD_DATE =20181018
This is part of an effort to integrate Intel ICC into Travis CI for the Boost Project. Nick Thompson made the original request and we were able to secure a license to use.
Note this may be a result of pre-C++17 support. I am going to see if it is limited to that, and cap the CI build so it only does C++11, C++14. If this is the case, it's likely not our issue, but if someone could take a look and confirm that would be great.
Scratch that, I think it's because libstdc++ is too old, fixing my work and will report...
Yep that was it, I forgot to update libstdc++ - issue resolved.
I don't see how this could be caused by libstdc++. For one, Boost.System's Travis does test the default libstdc++ 4.8. For another, the error looks like the result of applying C++11's constexpr to the member function assign
(in C++11 constexpr
implies const
), but it shouldn't, because assign
should only be constexpr on C++14 and above. (https://github.com/boostorg/system/blob/develop/include/boost/system/detail/config.hpp#L32)
If your default GCC is too old, you can tell ICC to use a newer one as follows. This is convenient if you don't want to override the default GCC from taking precedence in your path.
-gcc-name=<name>
name and location of gcc if not where expected
-gxx-name=<name>
name and location of g++ if not where expected
I suppose it's possible that ICC sees libstdc++ 4.8 and turns on some sort of compatibility mode, as libstdc++ 4.8 is C++11 and doesn't work under C++14 (it [libstdc++ 4.8] assumes that constexpr implies const.)
I would have to test to be sure, but I think there's a good chance that this is happening. ICC runs the associated GCC compiler as part of determining what it can/should support.
Was icpc -std=c++17
used here?
The issue was specifically that I forgot to update the libstdc++ in the build job so it remained at an older version (4.8). Once I revved it to 7.3, all was well.
I am adding Intel ICC build support into boostorg/boost-ci and when I tried to build Boost.Uuid, it failed with this error:
No further analysis has been done.