on SuSe linux 10.0
~/wurschtel/cpp> uname -a
Linux djebe 2.6.13-15-smp #1 SMP Tue Sep 13 14:56:15 UTC 2005 i686 i686 i386
GNU/Linux
with gcc version 4.0.2 (but also with 4.1.2)
when running make on the following files
A.h:

//const int NUM_BYTES = 5;

template<int NUM_BYTES>
class A
{

 public:
  int mBytes[NUM_BYTES];


};

-----
B.h:
#include "A.h"

template<int NUM_BYTES>
class B : public A<NUM_BYTES>
{

  public:
int blee() {
  mBytes[0]++;
  return mBytes[0];
};


};
-----
x.cpp:
#include "A.h"

template<int NUM_BYTES>
class B : public A<NUM_BYTES>
{

  public:
int blee() {
  mBytes[0]++;
  return mBytes[0];
};


};
-----
makefie:
#include "A.h"

template<int NUM_BYTES>
class B : public A<NUM_BYTES>
{

  public:
int blee() {
  mBytes[0]++;
  return mBytes[0];
};


};
-----
I get compile errors:
~/wurschtel/cpp> make
rm -f x
g++ -ansi -pedantic -Wall -o x x.cpp
B.h: In member function â&#128;&#152;int B<NUM_BYTES>::blee()â&#128;&#153;:
B.h:9: error: â&#128;&#152;mBytesâ&#128;&#153; was not declared in this scope
make: *** [x] Error 1
---
when the templates are changed to classes and the template parameter is
declared as constant everything compiles and runs ok.

On older linux running g++ version 2.95.2 everything compiles and runs ok.

Sorry if this report is duplicate, i filed it yesterday along with 30893 but
cannot find it today so I assume commit failed.


-- 
           Summary: public member of template class not visible in derived
                    template class
           Product: gcc
           Version: 4.0.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: sl at datamyway dot de


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

Reply via email to