I need to come up with a C++ cross-reference generator. Ideally it would
read source and have an API to let me make queries about identifiers, so
if we have special things to look for down the road it would be possible
extend the tool. For example, it would be great to have a cross-reference
that indicates where an object might be changed by assignment or by being
passed by reference to a function; where an object is created with "new",
and so on. But at very least we need something that indicates where
identifiers are defined and used.

I've looked into a number of commercial packages, like Declarative Systems'
C++ Auditor and Abraxas' CodeCheck. Those are too restrictive in terms of
licensing and tend to be overkill, or take a lot of work to specify rules to
generate the cross-reference. I've also looked at parsers like the
cppparser for pccts, but it's pretty rudimentary at this point and would
take an awful lot to create a useful data dictionary.