The built-in "Class Browser" has a fairly good support for classes, namespaces, class templates, etc., making it complete for common use.
However, I noticed a few situations in which there is still room for improvement. While using C::B for the development of a library I'm writing, which makes abusive use of some less commonly used C++ features such as partial template instantiation, I noticed how a few of my helper class templates, which are partially instantiated, show up in the class browser repeatedly. Example:
template<typename type, bool condition = false>
struct arr_conditional
{ ... };
template<typename type>
struct arr_conditional<type, true>
{ ... };
It appears that the template is correctly parsed, but there is no check as to whether a given template actually is a partial instantiation of a previously defined one - in this case, the class name suffices, of course. A good approach would be to store information on class templates in a relational way. (i.e., allowing to nest partial instantiations with the same class name under the most generic template). This would mean that the associated parser would need to keep track of template parameters - not evident at all, I know, but I'm willing to try to implement this myself.
Another thing I would like to know whether it is feasible, is to also list typedefs or show any aliases for a namespace next to its name.
Example (using same struct as above):
[-] MyNamespace namespace (MyAlias)
|
---[-] arr_conditional <typename, bool>
| |
| --- arr_conditional <typename> instantiation
|
--- typedef arr<double> array
I didn't see such an intelligent class browser in another IDE yet, and bet that C::B could be the first to get there.
EDIT: Please note, I also think that this could help further improvement of the code completion plugin.
Well, enough ranting for now. I apologize for the long post...
Best regards