g++ asked me to submit this report. It crashed on the following piece of code:
template < typename eval >
struct tpl_seq_search {
typedef typename eval::enum_type Enum;
template < Enum first, Enum last >
struct range {
static void find () {
range<first+1,last>::find();
}
};// range
template < Enum val >
struct range<val,val> {
static void find () {}
};// range
}; // tpl_bin_search
template < typename eval, typename eval::enum_type first, typename
eval::enum_type last >
void
tpl_seq_search_from_to () {
return( tpl_seq_search<eval>::template range<first,last>::find() );
}
struct xxx {
typedef int enum_type;
static enum_type const first = 0;
static enum_type const last = 20;
};
int main ( void ) {
tpl_seq_search_from_to<xxx,xxx::first,xxx::last>();
}
gcc> /added/pkg/gcc-4.0.2/usr/bin/g++ bug_20051208_01.cc
bug_20051208_01.cc: In function 'void tpl_seq_search_from_to() [with eval =
xxx, typename eval::enum_type first = 0, typename eval::enum_type last = 20]':
bug_20051208_01.cc:39: instantiated from here
bug_20051208_01.cc:27: internal compiler error: in lookup_member, at
cp/search.c:1209
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
The specs are:
gcc> /added/pkg/gcc-4.0.2/usr/bin/g++ -v
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: ../gcc-4.0.2/configure --prefix=/added/pkg/gcc-4.0.2/usr
Thread model: posix
gcc version 4.0.2
Best
Kai-Uwe Bux
--
Summary: internal compiler error: in lookup_member, at
cp/search.c:1209
Product: gcc
Version: 4.0.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: jkherciueh at gmx dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25342