[Bug c++/52830] New: ICE: "canonical types differ for identity types ..." when attempting SFINAE with member type

lucdanton at free dot fr gcc-bugzilla@gcc.gnu.org
Mon Apr 2 07:03:00 GMT 2012


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

             Bug #: 52830
           Summary: ICE: "canonical types differ for identity types ..."
                    when attempting SFINAE with member type
    Classification: Unclassified
           Product: gcc
           Version: 4.8.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: lucdanton@free.fr


Created attachment 27061
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=27061
Testcase

Using

$ gcc-snapshot --version
gcc-snapshot (Debian 20120313-1) 4.8.0 20120313 (experimental) [trunk revision
185345]

I get the following when attempting to compile what I believe to be a correct
testcase program (although I could be wrong on correctness):

main.cpp:25:21: internal compiler error: canonical types differ for identical
types std::enable_if<std::is_same<typename foo<T>::type, U>::value, int> and
std::enable_if<std::is_same<T, U>::value, int>

The program compiles and behaves as expected if T is used instead of
type/typename foo<T>::type in both declaration and definition, or if bar is
defined inline.



More information about the Gcc-bugs mailing list