Am 04.01.2012 21:04, schrieb Ville Skyttä: > This is the PR24163 case mentioned in > http://article.gmane.org/gmane.linux.redhat.fedora.devel/157671 > > diff --git a/config.h b/config.h > index 7825364..b0233a9 100644 > --- a/config.h > +++ b/config.h > @@ -122,7 +122,7 @@ public: > if (!isempty(s)) { > T *l = new T; > if (l->Parse(s)) > - Add(l); > + this->Add(l); > else { > esyslog("ERROR: error in %s, line %d", fileName, line); > delete l; This is one of the cases where it seems appropriate to have a lawyer for every C++ coder, just in case he needs to wrangle the standard... For info, the above references 14.6.2/3 of the ISO C++ standard, which is: > In the definition of a class template or a member of a class template, if a base class of the class template > depends on a template-parameter, the base class scope is not examined during unqualified name lookup > either at the point of definition of the class template or member or during an instantiation of the class tem- > plate or member. [Example: > typedef double A; > template<class T> class B { > typedef int A; > }; > template<class T> struct X : B<T> { > A a; // a has type double > }; > The type name A in the definition of X<T> binds to the typedef name defined in the global namespace > scope, not to the typedef name defined in the base class B<T>. ] In our case, I'm not sure if another solution would be to pull in the Add() method manually, by adding an using cList<T>::Add; to the class definition. There's a similar use of this->First() in Save() that already requires the this-> in current compilers, and it can also be resolved by an using cList<T>::First; . Cheers, Udo _______________________________________________ vdr mailing list vdr@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr