On 04/25/2017 03:22 AM, John Maddock via Boost wrote:
On 24/04/2017 20:03, Edward Diener via Boost wrote:
On 4/24/2017 1:37 PM, John Maddock via Boost wrote:
First some history....
Some time ago, the old gcd/lcm code was moved from Boost.Math to Boost.Integer as a means of reducing inter-library dependencies. Unfortunately a number of tasks were never completed: the docs weren't added to Boost.Integer, and the Boost.Math code never got updated to redirect to the moved headers. Fast forward a couple of years and when Jeremy Murphy contributed a new version of the gcd/lcm code as part of supporting polynomial gcd, and since I'd completely forgotten about the move, this got integrated into Boost.Math leaving us with two divergent versions.
As part of sorting this mess out, I've now pushed to Boost.Integer a "best of both" version of this code, so far as I can tell, all dependent libraries are unaffected by the change, though I do need to do some more work on supporting obsolete compilers I no longer have access to.
To which obsolete compilers are you referring ?
Primarily VC7.1, 8, 9. Also Sun+STLPort (which I do have access to, but I haven't fired up that virtual machine yet).
I have tested sun 12.2 through 12.5 with stlport and running the integer lasts from the latest 'develop'. My user-config.jam entry for each version has: <cxxflags>-std=sun03 <cxxflags>-library=stlport4 <linkflags>-std=sun03 <linkflags>-library=stlport4 <cxxflags>-features=tmplife <cxxflags>-features=tmplrefstatic ; I get, starting from the latest: 12.5 sun.compile.c++ /home/fceldiener/build/boost/bin.v2/libs/integer/test/common_factor_test.test/sun-12.5stlport/debug/address-model-32/common_factor_test.o "../../../boost/rational.hpp", line 141: Error: The type "boost::STATIC_ASSERTION_FAILURE<0>" is incomplete. "common_factor_test.cpp", line 327: Where: While specializing "boost::rational<my_wrapped_integer<int, 1>>". "common_factor_test.cpp", line 327: Where: Specialized in non-template code. 1 Error(s) detected. "/opt/oracle/developerstudio12.5/bin/CC" +d -std=sun03 -library=stlport4 -features=tmplife -features=tmplrefstatic -g -erroff=%none -m32 -KPIC -DBOOST_ALL_NO_LIB=1 -I"../../.." -c -o "/home/fceldiener/build/boost/bin.v2/libs/integer/test/common_factor_test.test/sun-12.5stlport/debug/address-model-32/common_factor_test.o" "common_factor_test.cpp" ...failed sun.compile.c++ /home/fceldiener/build/boost/bin.v2/libs/integer/test/common_factor_test.test/sun-12.5stlport/debug/address-model-32/common_factor_test.o... 12.4 sun.compile.c++ /home/fceldiener/build/boost/bin.v2/libs/integer/test/common_factor_test.test/sun-12.4stlport/debug/address-model-32/common_factor_test.o "../../../boost/integer/common_factor_rt.hpp", line 110: Warning: Identifier expected instead of "}". "../../../boost/throw_exception.hpp", line 64: Error: No direct declarator preceding "inline". "../../../boost/throw_exception.hpp", line 64: Error: "inline" is not allowed here. "../../../boost/throw_exception.hpp", line 64: Error: E is not defined. "../../../boost/throw_exception.hpp", line 64: Error: ")" expected instead of "const". "../../../boost/throw_exception.hpp", line 64: Error: In this declaration "boost::throw_exception" is of an incomplete type "void". "../../../boost/throw_exception.hpp", line 64: Error: "," expected instead of "const". "../../../boost/throw_exception.hpp", line 71: Error: A declaration was expected instead of "throw". "../../../boost/throw_exception.hpp", line 71: Error: Type name expected instead of "enable_error_info". "../../../boost/throw_exception.hpp", line 71: Error: Unexpected ")" -- Check for matching parenthesis. "../../../boost/throw_exception.hpp", line 71: Error: Operand expected instead of ";". "../../../boost/throw_exception.hpp", line 85: Error: No direct declarator preceding "void". "../../../boost/throw_exception.hpp", line 86: Error: E is not defined. "../../../boost/throw_exception.hpp", line 86: Error: ")" expected instead of "const". "../../../boost/throw_exception.hpp", line 86: Error: In this declaration "boost::exception_detail::throw_exception_" is of an incomplete type "void". "../../../boost/throw_exception.hpp", line 86: Error: "," expected instead of "const". "../../../boost/throw_exception.hpp", line 86: Error: Use ";" to terminate declarations. "../../../boost/throw_exception.hpp", line 86: Error: A declaration was expected instead of ",". "../../../boost/throw_exception.hpp", line 86: Error: Use ";" to terminate declarations. "../../../boost/throw_exception.hpp", line 86: Error: Use ";" to terminate declarations. "../../../boost/throw_exception.hpp", line 86: Error: "," expected instead of ")". "../../../boost/throw_exception.hpp", line 99: Error: A declaration was expected instead of "}". "../../../boost/multiprecision/cpp_int/checked.hpp", line 18: Error: The type "void" is incomplete. "../../../boost/multiprecision/cpp_int/checked.hpp", line 26: Error: The type "void" is incomplete. "../../../boost/multiprecision/cpp_int.hpp", line 151: Error: The type "void" is incomplete. "../../../boost/multiprecision/cpp_int/misc.hpp", line 46: Error: The type "void" is incomplete. Compilation aborted, too many Error messages. "/opt/oracle/solarisstudio12.4/bin/CC" +d -std=sun03 -library=stlport4 -features=tmplife -features=tmplrefstatic -g -erroff=%none -m32 -KPIC -DBOOST_ALL_NO_LIB=1 -I"../../.." -c -o "/home/fceldiener/build/boost/bin.v2/libs/integer/test/common_factor_test.test/sun-12.4stlport/debug/address-model-32/common_factor_test.o" "common_factor_test.cpp" ...failed sun.compile.c++ /home/fceldiener/build/boost/bin.v2/libs/integer/test/common_factor_test.test/sun-12.4stlport/debug/address-model-32/common_factor_test.o... 12.3 sun.compile.c++ /home/fceldiener/build/boost/bin.v2/libs/integer/test/fail_uint_65.test/sun-12.3stlport/debug/address-model-32/fail_uint_65.o CC: Warning: Option -std=sun03 passed to ld, if ld is invoked, ignored otherwise "/opt/oracle/solarisstudio12.3/bin/CC" +d -std=sun03 -library=stlport4 -features=tmplife -features=tmplrefstatic -g -erroff=%none -m32 -KPIC -DBOOST_ALL_NO_LIB=1 -I"../../.." -c -o "/home/fceldiener/build/boost/bin.v2/libs/integer/test/fail_uint_65.test/sun-12.3stlport/debug/address-model-32/fail_uint_65.o" "fail_uint_65.cpp" ...failed sun.compile.c++ /home/fceldiener/build/boost/bin.v2/libs/integer/test/fail_uint_65.test/sun-12.3stlport/debug/address-model-32/fail_uint_65.o... ...removing /home/fceldiener/build/boost/bin.v2/libs/integer/test/fail_uint_65.test/sun-12.3stlport/debug/address-model-32/fail_uint_65.o sun.compile.c++ /home/fceldiener/build/boost/bin.v2/libs/integer/test/common_factor_test.test/sun-12.3stlport/debug/address-model-32/common_factor_test.o CC: Warning: Option -std=sun03 passed to ld, if ld is invoked, ignored otherwise "../../../boost/integer/common_factor_rt.hpp", line 110: Warning: Identifier expected instead of "}". "../../../boost/integer/common_factor_rt.hpp", line 101: Error: Overloading ambiguity between "built-in operator<(int::my_wrapped_integer<int, 1>::*, int::my_wrapped_integer<int, 1>::*)" and "::my_wrapped_integer<int, 1>::operator<(const::my_wrapped_integer<int, 1>&) const". "../../../boost/integer/common_factor_rt.hpp", line 459: Where: While instantiating "static boost::integer::gcd_detail::gcd_traits_abs_defaults<::my_wrapped_integer<int, 1>, 0>::abs(const::my_wrapped_integer<int, 1>&)". "../../../boost/integer/common_factor_rt.hpp", line 459: Where: Instantiated from non-template code. 1 Error(s) and 1 Warning(s) detected. "/opt/oracle/solarisstudio12.3/bin/CC" +d -std=sun03 -library=stlport4 -features=tmplife -features=tmplrefstatic -g -erroff=%none -m32 -KPIC -DBOOST_ALL_NO_LIB=1 -I"../../.." -c -o "/home/fceldiener/build/boost/bin.v2/libs/integer/test/common_factor_test.test/sun-12.3stlport/debug/address-model-32/common_factor_test.o" "common_factor_test.cpp" ...failed sun.compile.c++ /home/fceldiener/build/boost/bin.v2/libs/integer/test/common_factor_test.test/sun-12.3stlport/debug/address-model-32/common_factor_test.o... 12.2 ../../../boost/cstdint.hpp", line 381: Error: uintptr_t is not defined. appears for each test. I did not try 64-bit tests. Should I try with a higher -std=c++11 level with stlport ? I have separate jam entries which test each version without the stlport library but with c++03 or c++11 as the standard.
All have tentative fixes in place which I think will fix things, but I'm waiting on the tests to cycle.
John.