parsing of c++ template definitions in separate files

Raimar Sandner lists at 404not-found.de
Tue Apr 24 14:01:14 UTC 2012


Hi,

I'm working with a project where most template definitions are in separate 
*.tpp files. A minimal example follows:

--------------------------------------------------------
The file main.cpp:
--------------------------------------------------------
#include "foo.h"

int main(int argc, char **argv) {
  Foo<1> f;
}
--------------------------------------------------------
The file foo.h:
--------------------------------------------------------
#ifndef FOO_H
#define FOO_H

template<int R>
struct Foo
{
  void bar();
};
#include "foo.tpp"
#endif // FOO_H

--------------------------------------------------------
The file foo.tpp:
--------------------------------------------------------
template<int R>
void Foo<R>::bar()
{
}
--------------------------------------------------------

Now when I edit foo.tpp, the semantic analysis cannot resolve the class Foo<R> 
unless I #include "foo.h". This is safe because of the include guards, but if 
possible I would like to avoid this workaround because I would need to 
maintain a private branch of the project. Is there any other way to tell the 
parser that when editing foo.tpp it should parse foo.h along with it?

Best regards
Raimar




More information about the KDevelop mailing list