On Wednesday, Apr 23, 2003, at 16:07 America/Denver, Justin M. Lewis wrote:
Sorry if the explanation is a bit confusing.  The whole idea here is to
make it explicit at the function invocation that a parameter being
passed will be used to return a value.

A good example of where this would be useful is with a function call
that takes some params, and returns several different things in
different params, and still has an explicit return for an error code.
At the invocation point it would be impossible to tell what's going on.

int chk;
chk = GetSomething(p1, p2, p3, p4, p5);

where the actual declaration of GetSomething is like

int GetSomething(int &ret1, int &ret2, int v1, int v2, int v3);

It's impossible to tell at the invocation which params are returning,
and which are being used to calculate the return.  At the invocation it
looks like chk might be what you're trying to get.

With classes like I'm suggesting it would be obvious, the declaration
would be:
int GetSomething(c_out<int> ret1, c_out<int> &ret2, int v1, int v2, int
v3);

And at the invocation now, it has to be explicit that those first 2
params are out params.

chk = GetSomething(out(p1), out(p2), p3, p4, p5);

It REQUIRES you to use the out helper function at the invocation, so
anyone reading the code later can see, without checking the
implementation of GetSomething, that those 2 params are being set, and
the last ones are not.

Is this really that much better than


chk = GetSomething(&p1, &p2, p3, p4, p5);

or

GotSomething ret = GetSomething(p3,p4,p5);

?

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to