Is it possible to have a function that takes a reference to an argument that has a default, where the default is instantiated using its default constructor?
For example:
void g(Foo &f = Foo()) {}
This does not work, but I feel that it conveys my intention quite clearly.