[Bug c++/50454] New: Unexpected problems with -pedantic / -pedantic-errors and __int128 and unsigned __int128 specializations
paolo.carlini at oracle dot com
gcc-bugzilla@gcc.gnu.org
Mon Sep 19 11:44:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50454
Bug #: 50454
Summary: Unexpected problems with -pedantic / -pedantic-errors
and __int128 and unsigned __int128 specializations
Classification: Unclassified
Product: gcc
Version: 4.7.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: paolo.carlini@oracle.com
Consider the following, with -pedantic-errors (-pedantic triggers a warning):
template<typename>
struct limits;
template<>
struct limits<__int128> { };
template<>
struct limits<unsigned __int128> { };
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>’
The first and second error lines are certainly incorrect. If I remove the
second specialization the error goes away completely. GCC system_header appear
to help, but then soon the problem resurfaces, eg, together with PCHs.
As an additional data point, the following appears to work, no errors or
warnings with either option:
template<typename>
struct limits;
template<>
struct limits<__int128_t> { };
template<>
struct limits<__uint128_t> { };
(and I'm using it for the time being for PR40856), but still isn't entirely OK,
I can still trigger errors post 40856 for the following user code snippet
compiled with -std=gnu++0x -pedantic-errors on, eg, x86_64-linux (at least
-pedantic is fine in this case)
#include <limits>
static_assert(std::numeric_limits<__int128_t>::is_specialized == true, "");
static_assert(std::numeric_limits<__uint128_t>::is_specialized == true, "");
Something is definitely fishy here, considering in particular that, I'm told,
__int128_t should be just a typedef for __int128, likewise __uint128_t for
unsigned __int128.
More information about the Gcc-bugs
mailing list