This is now bugzilla 56558.

Thierry Moreau wrote:
Hi,

The C++ template code in annex triggers a compile-time error on 4.2, 4.4, 4.6, but not on 4.7. (I suppose this bug has been found and tracked before.)


===========================
  template<int SIZE> class t1
  {
    public:
      int length;
  };

  template<int SIZE> class t2 : public t1<SIZE>
  {
    public:
      void f();
  };

  template<int SIZE>
      void t2<SIZE>::f()
  {
    int &len=(t1<SIZE>::length); // ok
    t1<SIZE>::length=100; // ok
    unsigned char *val=new unsigned char[t1<SIZE>::length]; // ok
    int ln=-(t1<SIZE>::length); // ok
    int *ptlen=&(t1<SIZE>::length); // address-of operator in this
                         // base class template member access
                         // ==> compiler bug with gcc 4.2 to 4.6
  }

void fstatic()
{
  t2<1000> obj;
  obj.f(); // instantiate ...
}
===========================
 In member function 'void t2<SIZE>::f() [with int SIZE = 1000]':
error: cannot convert 'int t1<1000>::*' to 'int*' in initialization
===========================



--
- Thierry Moreau

CONNOTECH Experts-conseils inc.
9130 Place de Montgolfier
Montreal, QC, Canada H2M 2A1

Tel. +1-514-385-5691

Reply via email to