[Bug c++/72752] New: internal compiler error: in retrieve_specialization

mikeus at hotmail dot ru gcc-bugzilla@gcc.gnu.org
Fri Jul 29 21:31:00 GMT 2016


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72752

            Bug ID: 72752
           Summary: internal compiler error: in retrieve_specialization
           Product: gcc
           Version: 6.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: mikeus at hotmail dot ru
  Target Milestone: ---

The following code generates an ice:
----- 8< ---------- 8< ---------- 8< -----
typedef void (*foo_t)();

void test(foo_t)
{}

template< typename >
struct A
{
  template< typename = void > static void foo();

  void bar()
  {
    test(foo);
  }

  template< typename >
  void baz()
  {
    test(foo);
  }
};

template< typename _T_ >
template< typename >
void A< _T_ >::foo()
{}
----- >8 ---------- >8 ---------- >8 -----

Version 5.3.0 compiles the above code successfully.

This is possibly related with bug #66564.
The following code generates an ice for both versions:
----- 8< ---------- 8< ---------- 8< -----
template< typename >
struct Outer
{
  template< typename >
  struct Inner;
};

template<>
template< typename _T_ >
class Outer< _T_ >::Inner< _T_ >
{};

template struct Outer< int >::Inner< int >;
----- >8 ---------- >8 ---------- >8 -----


More information about the Gcc-bugs mailing list