On 14/08/2013 11:54, Brian Gladman wrote:
> On 14/08/2013 11:06, degski wrote:
>> Hi Brian,
>>
>> It does fail for me though:
>>
>> Z:\VC\x64\include\mpirxx.h(1596): error : invalid redeclaration of member
>> function "__gmp_expr<mpz_t, mpz_t>::__gmp_expr(__int64)" (declared at line
>> 1590)
>>       __gmp_expr(intmax_t l) { mpz_init_set_sx(mp, l); }
>>       ^
>>
>> Z:\VC\x64\include\mpirxx.h(1597): error : invalid redeclaration of member
>> function "__gmp_expr<mpz_t, mpz_t>::__gmp_expr(unsigned __int64)" (declared
>> at line 1591)
>>       __gmp_expr(uintmax_t l) { mpz_init_set_ux(mp, l); }
>>       ^
>> This already happens when just including the header mpirxx.h in a project
>> (VS2012/release/x64).
> 
> Looking at the tests, there is no test that checks things when <cstdint>
> is included.  I suspect that this is why I don't see these errors.

As I suspected, when I include <cstdint> the errors turn up.

So when <cstdint> is included, we need to:

(a) check if (u)intmax_t is a 'long' and, if it is:
(b) check if there is an equivalent 'long' overload;
(c) if there is, don't declare any overloads on (u)intmax_t

(d) check if (u)intmax_t is a 'long long' and, if it is:
(e) check if there is an equivalent 'long long' overload;
(f) if there is, don't declare any overloads on (u)intmax_t

If there are no situations where (u)intmax_t is not either 'long' or
'long long' we could simply remove all these declarations.

Otherwise I wonder what are the right set of MACROS to achieve the above
guards?

   Brian

-- 
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.

Reply via email to