---------- Forwarded message ---------- From: Wojciech Izykowski <wizykow...@gmail.com> Date: 6 December 2012 17:13 Subject: Bug in gmpxx.h (MPIR 2.6.0) To: thempirt...@gmail.com
In MPIR 2.6.0 gmpxx.h file (lines 1589-1599) #ifdef MPIRXX_HAVE_LLONG __gmp_expr(signed long long int l) { mpz_init_set_si(mp, l); } __gmp_expr(unsigned long long int l) { mpz_init_set_ui(mp, l); } #endif #if defined( _MSC_VER ) && _MSC_VER >= 1600 #if defined( _STDINT_H ) || defined ( _STDINT_H_ ) || defined ( _STDINT ) __gmp_expr(intmax_t l) { mpz_init_set_sx(mp, l); } __gmp_expr(uintmax_t l) { mpz_init_set_ux(mp, l); } #endif #endif should be #ifdef MPIRXX_HAVE_LLONG __gmp_expr(signed long long int l) { mpz_init_set_si(mp, l); } __gmp_expr(unsigned long long int l) { mpz_init_set_ui(mp, l); } #else #if defined( _MSC_VER ) && _MSC_VER >= 1600 #if defined( _STDINT_H ) || defined ( _STDINT_H_ ) || defined ( _STDINT ) __gmp_expr(intmax_t l) { mpz_init_set_sx(mp, l); } __gmp_expr(uintmax_t l) { mpz_init_set_ux(mp, l); } #endif #endif #endif Rationale: intmax_t might be signed long long int and uintmax_t might be unsigned long long int and then we get Visual C++ compiler error 'member function already declared'. Similarly, lines 1660-1670: it is: #ifdef MPIRXX_HAVE_LLONG __gmp_expr & operator=(signed long long int i) { mpz_set_si(mp, i); return *this; } __gmp_expr & operator=(unsigned long long int i) { mpz_set_ui(mp, i); return *this; } #endif #if defined( _MSC_VER ) && _MSC_VER >= 1600 #if defined( _STDINT_H ) || defined ( _STDINT_H_ ) || defined ( _STDINT ) __gmp_expr & operator=(intmax_t i) { mpz_set_sx(mp, i); return *this; } __gmp_expr & operator=(uintmax_t i) { mpz_set_ux(mp, i); return *this; } #endif #endif it should be #ifdef MPIRXX_HAVE_LLONG __gmp_expr & operator=(signed long long int i) { mpz_set_si(mp, i); return *this; } __gmp_expr & operator=(unsigned long long int i) { mpz_set_ui(mp, i); return *this; } #else #if defined( _MSC_VER ) && _MSC_VER >= 1600 #if defined( _STDINT_H ) || defined ( _STDINT_H_ ) || defined ( _STDINT ) __gmp_expr & operator=(intmax_t i) { mpz_set_sx(mp, i); return *this; } __gmp_expr & operator=(uintmax_t i) { mpz_set_ux(mp, i); return *this; } #endif #endif #endif Thank your for MPIR. It's a great library! Regards Wojciech Izykowski -- You received this message because you are subscribed to the Google Groups "mpir-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to mpir-devel+unsubscr...@googlegroups.com. To post to this group, send email to mpir-devel@googlegroups.com. Visit this group at http://groups.google.com/group/mpir-devel. For more options, visit https://groups.google.com/groups/opt_out.