I have a function which returns a vector or set:
set foo() {
set bar;
// create and massage bar
return bar;
}
set
I usually work around this by having function signature as
void foo(set *x)
Just pass it by reference or the other option is already mentioned in the comment.
Edit: I have changed the argument type to illustrate that x could be changed.
set s;
foo(&s);
This is only preferred when you have an old compiler. I suppose that could be the case with some of the projects.
And, better thing to do will be Either to use move semantics with c++11. Or go ahead returning the container and look into RVO in modern compilers.