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>".
"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::my_wrapped_integer::*)" and "::my_wrapped_integer::operator<(const::my_wrapped_integer&) const".
"../../../boost/integer/common_factor_rt.hpp", line 459: Where:
While instantiating "static
boost::integer::gcd_detail::gcd_traits_abs_defaults<::my_wrapped_integer, 0>::abs(const::my_wrapped_integer&)".
"../../../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.