We have been working on improvements to our C++ debugging support, but unfortunately it isn’t yet complete. We plan to support most of what you have listed. Responses to specific inquiries follow:
setting watch/breakpoints on data/routines within namespaces
Qualifying the names of routines and data by namespace is not yet supported.
setting breakpoints in C++ classes, especially ctors/dtors
In 7.1, you can do this by qualifying the name with the class, e.g. for the constructor of class foo you would set the breakpoint on foo::foo. In the GUI you would just point to it and click in the events column.
setting breakpoints in all routines of a given (undecorated) name
You currently have to do this one-by-one
setting breakpoints in one routine, where duplicate (undecorated) names exist
The debugger will prompt you asking which member function you want to set the breakpoint in. I don’t think it will currently disambiguate names outside of a single class, so you may want to qualify the routine name using the class name.
setting breakpoints in template functions
We don’t yet have support for setting a breakpoint on a template function by name. In many cases you can step into a template function and set breakpoints while you are in the scope of the function.