Parser error with template class

Raimar Sandner lists at
Sun Jul 22 18:18:08 BST 2012


I am using kdevelop-4.3.1. Please consider the following example:

template<class A>
struct SomeTemplateClass
  static void f() {}

template<class A>
struct SomeOtherTemplateClass
  typedef SomeClass<A> SomeTemplateAlias;
  // version 1:
  using SomeTemplateAlias::f;
  // version 2:
  // using SomeTemplateClass<A>::f;

Hovering over the using statement version 1 will give two tooltip windows, one 
"Problem in Semantic Analyis: Declaration not found: SomeTemplateAlias::f". 
The other:
"SomeTemplateAlias::f f
Container: SomeOtherTemplateClass Access: public Kind: Variable" which is not 
correct (wrong Container and f is not a variable).

Version 2 will not show the "Declaration not found" but also show the wrong 

In contrast, a typedef _outside_ the class scope with specific template 
parameter works correctly and shows f as a function in container 

typedef SomeTemplateClass<int> C;
using C::f;

Also, an example without templates works correctly:

struct SomeClass
  static void f() {}

struct SomeOtherClass
  typedef SomeClass SomeAlias;
  using SomeAlias::f;

Here SomeAlias::f will be correctly displayed as function in the container 

Is this a bug or a known limitation of how the parsing of template classes 

Best regards

More information about the KDevelop mailing list