id summary reporter owner description type status milestone component version severity resolution keywords cc 11112 CS identifier causes compilation failure in geometry/test/strategies/distance_default_result.cpp Sergey.Sprogis@… Barend Gehrels " 1. Description of the failure. geometry/test/strategies/distance_default_result.cpp fails with Oracle Studio 12.4 C++ compiler on Solaris producing error message similar to this: ""CC"" -library=stlport4 -xO4 -mt -erroff=%none -KPIC -DBOOST_ALL_NO_LIB=1 -DNDEBUG -I""."" -I""../../.."" -I""../../../boost/geometry/extensions/contrib/ttmath"" -c -o ""../../../bin.v2/libs/geometry/test/strategies/distance_default_result.test/sun/release/stdlib-sun-stlport/threading-multi/distance_default_result.o"" ""strategies/distance_default_result.cpp"" ""strategies/distance_default_result.cpp"", line 183: Error: "","" expected instead of ""15"". 2. Cause of the failure. The code of this test is perfectly fine from language standpoint, and the failure is related to long-existing bug in all later Solaris versions. Basically, compilation of any C or C++ code will fail on Solaris if it will satisfy two conditions: * The presence of #include system header, direct or indirectly attached through other system headers from /usr/include directory. * The presence of identifiers which accidentally coincide with X86 register names, like CS, DS, ES, ... Here is an example of such 2 lines code: #include template inline void test_segment_all() {}; its compilation will produce error message similar to the one shown above. The failure occurs because that /usr/include/sys/regset.h has the following macros: #define CS 15 #define DS 3 #define ES 2 and when compiler preprocesses this header, after that it automatically replaces user identifiers which accidentally have the same names with those numbers shown above. So, in the original test has been attached indirectly through long chain of system headers defined inside STL library with the usage of -library=stlport4 option, and when finally compiler preprocesses code from the test shown below: template // Line 183 it wrongly replaces CS with '15' assuming that it comes from macro defined inside sys/regset.h 3. Possible Solution. To replace CS identifier inside geometry/test/strategies/distance_default_result.cpp with any other similar name, like for example C_S. " Bugs closed Boost 1.58.0 geometry Boost 1.57.0 Problem fixed Aparna.Kumta@…