Member specialisation bug (?) in 3.3 (C++)

Ole Laursen olau@hardworking.dk
Sun May 18 11:30:00 GMT 2003


Hi,

Debian has switched to GCC 3.3 for unstable which renders programs
that use gtkmm unusable. The problem is that a certain member template
specialisation pattern is used in the headers. The problem can be
reproduced with the following snippet:

  class X
  {
  private:
    template <typename T> struct Y;   // line 4
  };

  template <> struct X::Y<int>
  {                                   // line 8
  };

  int main()
  {
  }

Compiling this with GCC 3.3 gives

  $ g++ -o test test.c++ -Wall
  test.c++:4: error: `template<class T> struct X::Y' is private
  test.c++:8: error: within this context

whereas it worked with 3.2. Is this a bug in the compiler or is
specialisation of private template members simply not possible in C++?

-- 
Ole Laursen
http://www.cs.auc.dk/~olau/



More information about the Gcc mailing list