According to [lex.icon], Table 5 of the C++ 0x spec (e.g., N21914), the type
of the integer literal in the snippet below in ILP32 is long long. gcc does
the right thing (i.e., interprets the literal correctly) but the warning it
issues (with -m32 only) is unwarranted.

$ cat t.cpp && g++ -dumpversion && g++ -c -m32 -std=c++0x t.cpp
long long foo ()
{
    return 0x123456789abcd;
}
4.4.1
t.cpp:3: warning: integer constant is too large for ‘long’ type


-- 
           Summary: warning on a large hex literal in C++ 0x mode
           Product: gcc
           Version: 4.4.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: msebor at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41561

Reply via email to