Some of the cxx synthetic child providers (for vector, set, multiset and bitset) were implicitly assuming that the object they received to format was an object, not a pointer or reference to an object, even though the pattern they used matched pointers and references.
Since that seems a handy simplification for the child provider, I added a flag to the provider flags to request that they always get an object, and made the generic front end runner code do the dereference before handing the ValueObject off to the provider.
Also added tests to all the failing formatters to ensure that they work with pointers and references.