[v3] libstdc++/50441

Paolo Carlini paolo.carlini@oracle.com
Sun Sep 18 22:30:00 GMT 2011


On 09/18/2011 08:58 PM, Paolo Carlini wrote:
> On 09/18/2011 08:36 PM, Joseph S. Myers wrote:
>> __int128_t and __uint128_t are legacy typedefs for __int128 and 
>> unsigned __int128.
> I didn't realize this. Thus I guess, for 50441 and also for 40856 
> (which I'm about to do) better doing everything in terms of __int128 
> and unsigned __int128.
I'm currently blocked by the following issue. If I try to compile, with 
-std=gnu++98 (the default for C++) and -pedantic-errors:

template<typename T>
struct limits;

template<>
struct limits<__int128> { };

template<>
struct limits<unsigned __int128> { };

I get:

a.cc:8:26: error: ISO C++ does not support ‘__int128’ for ‘type name’ 
[-pedantic]
a.cc:8:10: error: redefinition of ‘struct limits<__int128>’
a.cc:5:10: error: previous definition of ‘struct limits<__int128>’

this of course does *not* happen with __int128_t and __uint128_t. 
Apparently I can suppress such -pedantic and -pedantic-errors issues in 
pragma system_header headers, but then resurface when using PCHs. Please 
let me know if the above is supposed to work in a gnu++98 (or gnu++0x) 
system header also together with any -pedantic options, or I should 
really use __int128_t and __uint128_t for the time being, I would be 
certainly ok with the latter.

Thanks!
Paolo.



More information about the Libstdc++ mailing list