Presented test case produces following output:

g++ ice.cxx
ice.cxx: In member function '__typeof__ (ice<function_t>::tp(tType()))
ice<function_t>::foo(const tType&) const [with tType = int, function_t = bool
(*)(long int)]':
ice.cxx:9: internal compiler error: in write_type, at cp/mangle.c:1648

The test case:
ice.cxx:

template<typename function_t>
struct ice
  {
  function_t const& CALLER;
  static function_t tp;
  ice( function_t const& func ) : CALLER( func ) { }
  template<typename tType>
  typeof( tp( tType() ) ) foo( tType const& value ) const
    { return ( CALLER( value ) ); }
  };

bool iceh( int long a )
  {
  return ( a > 1 );
  }

int main( int, char** )
  {
  return ( ice<typeof(&iceh)>( &iceh ).foo( 3 ) ? 7 : 13 ) ;
  }


-- 
           Summary: ICE in write_type, at cp/mangle.c:1648
           Product: gcc
           Version: 4.2.3
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: marcin-konarski at o2 dot pl
 GCC build triplet: i486-linux-gnu
  GCC host triplet: i486-linux-gnu
GCC target triplet: i486-linux-gnu


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

Reply via email to