[PPL-devel] Re: GMP 4.2 release candidate available
Roberto Bagnara
bagnara at cs.unipr.it
Tue Mar 21 19:20:42 CET 2006
Torbjorn Granlund wrote:
> There is now a GMP 4.2 release candidate available, please test it and
> report problems and successes to me (not to any GMP list).
>
> The tar file is here:
>
> ftp://ftp.swox.com/pub/gmp/src/gmp-4.1.99.tar.bz2
>
> Unless something terrible shows up, I will release GMP 4.2 tomorrow.
A bug has been introduced into the C++ interface. This is witnessed
by the following program:
#include <gmpxx.h>
void foo(mpz_class& a,
const mpz_class& b, const mpz_class& c, const mpz_class& d) {
a = b*a - c*d;
}
It does just fine with GMP 4.1.4, but with the release candidate I obtain
the following:
$ g++ -v
Reading specs from /usr/local/lib/gcc/i686-pc-linux-gnu/3.4.4/specs
Configured with: ../gcc-3.4.4/configure --prefix=/usr/local
Thread model: posix
gcc version 3.4.4
$ g++ -c bug.cc
bug.cc: In function `void foo(mpz_class&, const mpz_class&, const mpz_class&, const mpz_class&)':
bug.cc:5: error: ambiguous class template instantiation for `struct __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies> >, __gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies> >, __gmp_binary_minus> >'
/usr/local/include/gmpxx.h:4585: error: candidates are: class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], T>, __gmp_expr<__mpz_struct[1], U>, __gmp_binary_multiplies> >, __gmp_expr<__mpz_struct[1], V>, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4585: error: class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], __gmp_binary_expr<T, __gmp_expr<__mpz_struct[1], U>, __gmp_binary_multiplies> >, __gmp_expr<__mpz_struct[1], V>, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4585: error: class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], T>, U, __gmp_binary_multiplies> >, __gmp_expr<__mpz_struct[1], V>, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4585: error: class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], T>, mpz_class, __gmp_binary_multiplies> >, __gmp_expr<__mpz_struct[1], U>, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4585: error: class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, __gmp_expr<__mpz_struct[1], T>, __gmp_binary_multiplies> >, __gmp_expr<__mpz_struct[1], U>, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4585: error: class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], __gmp_binary_expr<T, mpz_class, __gmp_binary_multiplies> >, __gmp_expr<__mpz_struct[1], U>, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4585: error: class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, T, __gmp_binary_multiplies> >, __gmp_expr<__mpz_struct[1], U>, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4585: error: class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies> >, __gmp_expr<__mpz_struct[1], T>, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4581: error: class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], T>, __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], U>, __gmp_expr<__mpz_struct[1], V>, __gmp_binary_multiplies> >, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4581: error: class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], T>, __gmp_expr<__mpz_struct[1], __gmp_binary_expr<U, __gmp_expr<__mpz_struct[1], V>, __gmp_binary_multiplies> >, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4581: error: class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], T>, __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], U>, V, __gmp_binary_multiplies> >, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4581: error: class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], T>, __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], U>, mpz_class, __gmp_binary_multiplies> >, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4581: error: class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], T>, __gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, __gmp_expr<__mpz_struct[1], U>, __gmp_binary_multiplies> >, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4581: error: class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], T>, __gmp_expr<__mpz_struct[1], __gmp_binary_expr<U, mpz_class, __gmp_binary_multiplies> >, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4581: error: class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], T>, __gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, U, __gmp_binary_multiplies> >, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4581: error: class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], T>, __gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies> >, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:3549: error: class __gmp_expr<T, __gmp_binary_expr<__gmp_expr<T, U>, __gmp_expr<T, V>, Op> >
/usr/local/include/gmpxx.h:3516: error: class __gmp_expr<T, __gmp_binary_expr<__gmp_expr<U, V>, __gmp_expr<T, W>, Op> >
/usr/local/include/gmpxx.h:3483: error: class __gmp_expr<T, __gmp_binary_expr<__gmp_expr<T, U>, __gmp_expr<V, W>, Op> >
/usr/local/include/gmpxx.h:3452: error: class __gmp_expr<T, __gmp_binary_expr<U, __gmp_expr<T, V>, Op> >
/usr/local/include/gmpxx.h:3425: error: class __gmp_expr<T, __gmp_binary_expr<__gmp_expr<T, U>, V, Op> >
bug.cc:5: error: invalid use of undefined type `struct __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies> >, __gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies> >, __gmp_binary_minus> >'
/usr/local/include/gmpxx.h:1885: error: declaration of `struct __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies> >, __gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies> >, __gmp_binary_minus> >'
/usr/local/include/gmpxx.h: In function `__gmp_expr<typename __gmp_resolve_expr<T, V>::value_type, __gmp_binary_expr<__gmp_expr<T, U>, __gmp_expr<V, W>, __gmp_binary_minus> > operator-(const __gmp_expr<T, U>&, const __gmp_expr<V, W>&) [with T = __mpz_struct[1], U = __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies>, V = __mpz_struct[1], W = __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies>]':
bug.cc:5: instantiated from here
/usr/local/include/gmpxx.h:4898: error: return type `struct __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies> >, __gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies> >, __gmp_binary_minus> >' is incomplete
/usr/local/include/gmpxx.h:4898: error: invalid use of undefined type `struct __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies> >, __gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies> >, __gmp_binary_minus> >'
/usr/local/include/gmpxx.h:1885: error: declaration of `struct __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies> >, __gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies> >, __gmp_binary_minus> >'
All the best,
Roberto
--
Prof. Roberto Bagnara
Computer Science Group
Department of Mathematics, University of Parma, Italy
http://www.cs.unipr.it/~bagnara/
mailto:bagnara at cs.unipr.it
More information about the PPL-devel
mailing list