This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

internal error: template member template


Hi!

My Compiler asked me to submit a bug report:

> g++ LoopOverTemplateFunction.2.C
LoopOverTemplateFunction.2.C:17: Internal compiler error 354.
LoopOverTemplateFunction.2.C:17: Please submit a full bug report to
`egcs-bugs@egcs.cygnus.com'.

> g++ --version
egcs-2.91.66

Thanks for any answer.

Markus

BUG REPORT:

> uname -a
Linux sylvie 2.0.35 #66 Thu Aug 20 14:18:52 MEST 1998 i686 unknown

> gcc -v --save-temps LoopOverTemplateFunction.2.C
Reading specs from
/opt/egcs-1.1.2/lib/gcc-lib/i686-pc-linux-gnulibc1/egcs-2.91.66/specs
gcc version egcs-2.91.66 19990314 (egcs-1.1.2 release)
 /opt/egcs-1.1.2/lib/gcc-lib/i686-pc-linux-gnulibc1/egcs-2.91.66/cpp -lang-c++
-v -undef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -D__GNUC_MINOR__=91 -D__ELF__
-Dunix -Di386 -D__i386__ -Dlinux -D__ELF__ -D__unix__ -D__i386__ -D__i386__
-D__linux__ -D__unix -D__i386 -D__linux -Asystem(posix) -D__EXCEPTIONS
-Asystem(unix) -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ -Di686
-Dpentiumpro -D__i686 -D__i686__ -D__pentiumpro -D__pentiumpro__
LoopOverTemplateFunction.2.C LoopOverTemplateFunction.2.ii
GNU CPP version egcs-2.91.66 19990314 (egcs-1.1.2 release) (i386 Linux/ELF)
#include "..." search starts here:
#include <...> search starts here:
 /opt/egcs-1.1.2/lib/gcc-lib/i686-pc-linux-gnulibc1/egcs-2.91.66/include/g++
 /usr/local/include
 /opt/egcs-1.1.2/i686-pc-linux-gnulibc1/include
 /opt/egcs-1.1.2/lib/gcc-lib/i686-pc-linux-gnulibc1/egcs-2.91.66/include
 /usr/include
End of search list.
 /opt/egcs-1.1.2/lib/gcc-lib/i686-pc-linux-gnulibc1/egcs-2.91.66/cc1plus
LoopOverTemplateFunction.2.ii -quiet -dumpbase LoopOverTemplateFunction.2.cc
-version -o LoopOverTemplateFunction.2.s
GNU C++ version egcs-2.91.66 19990314 (egcs-1.1.2 release)
(i686-pc-linux-gnulibc1) compiled by GNU C version egcs-2.91.66 19990314
(egcs-1.1.2 release).
LoopOverTemplateFunction.2.C:17: Internal compiler error 354.
LoopOverTemplateFunction.2.C:17: Please submit a full bug report to
`egcs-bugs@egcs.cygnus.com'.
LoopOverTemplateFunction.2.C:17: See
<URL:http://egcs.cygnus.com/faq.html#bugreport> for details.

-------------------------------------------------------


LoopOverTemplateFunction.2.ii.gz

#include <iostream>

template<int m> void f1(){ cerr << m << endl;}

template<int m> class f2 {
public:
  static inline void Exec() { f1<m>(); }
};


template <int i, int j, bool b=(i<=j)> 
class LoopFromTo {
public:
  template<template<> class f> void Exec() { 
    cerr << "You are wrong here" << endl; 
  }
};

template <int i, int j>
class LoopFromTo<i, j, true> {
public:
  template<template<> class f> void Exec() { 
    f<i>::Exec();
    LoopFromTo<i+1,j>::Exec(f);
  }
};

template <int i, int j> 
class LoopFromTo<i, j, false> {
public:
  template<template<> class f> void Exec() { }
};


int main() {
  LoopFromTo<1,4>::Exec<f2>();
  cerr << endl;
  
  LoopFromTo<4,4>::Exec<f2>();
  cerr << endl;

  LoopFromTo<5,4>::Exec<f2>();

  return(0);
}

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]