ICE in g++ 3.4.0 (cygwin) and 3.4.3 ("GNU C++ version 3.4.3 (i686-pc-cygwin)").
OK for g++ 3.3.1 ("GNU C++ version 3.3.1 (mingw special 20030804-1) (mingw32)"
and "GNU C++ version 3.3.1 (cygming special) (i686-pc-cygwin)").

Test case (legal code!):

template <typename Class>
struct the_base{
  template <void (Class::*Fn)()> void foo() { }
};

template <typename T>
struct derivedT: the_base<derivedT<T> > {
  typedef the_base<derivedT<T> > parent;
  void ice(){
    this->parent::template foo< &derivedT<T>::ice>();
  }
};

int main() {
  derivedT<int> dT;
  dT.ice();
}

Output (command line: "c++ -v gccfail.cpp"):

...
GNU C++ version 3.4.3 (i686-pc-cygwin)
        compiled by GNU C version 3.4.0.
...
gccfail.cpp: In member function `void derivedT<T>::ice() [with T = int]':
gccfail.cpp:16:   instantiated from here
gccfail.cpp:10: internal compiler error: in build_base_path, at cp/class.c:275
...

Regards,
Vladimir Marko

-- 
           Summary: [Regression] ICE with mem-fun-ptr as template parameter
                    for nested function template (build_base_path,
                    cp/class.c)
           Product: gcc
           Version: 3.4.3
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: SWElef at post dot sk
                CC: gcc-bugs at gcc dot gnu dot org


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

Reply via email to