following minimal reproduce fails with gcc 4.0.1:
template<typename T>
class TVector
{
public:
T x,y,z,w;
};
template<typename T>
class TQuaternion : public TVector<T>
{
public:
T Sum()
{
return x+y+z+w;
}
};
the output produced is:
g++ -rdynamic -c -o test.o test.cpp
test.cpp: In member function 'T TQuaternion<T>::Sum()':
test.cpp:15: error: 'x' was not declared in this scope
test.cpp:15: error: 'y' was not declared in this scope
test.cpp:15: error: 'z' was not declared in this scope
test.cpp:15: error: 'w' was not declared in this scope
this should better work. it does e.g. in msvc.
i'm aware of e.g.
http://developer.apple.com/documentation/DeveloperTools/gcc-4.0.0/gcc/Name-lookup.html
requirements as mentioned in the document above clutter the code tremendously.
the complete code that this reproduce bases on also includes complex matrix
operation code, imagine how it looks after its made valid.
i'd be happy if someone could rethink the decisions on this.
--
Summary: gcc cant find base class template members
Product: gcc
Version: 4.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: gccbugs at paniq dot org
CC: gcc-bugs at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23496