$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Maxim Shemanarev (mcseem_at_[hidden])
Date: 2002-09-20 18:27:38
That's me again with my stupid questions :-)
It's not explicitely indicated in the BOOST guidelines what I should
prefer - pointer or reference when I have to use semantically "out" or
"in-out" arguments. I know it's better to use "functional" style when we
have only one return value, but that's not always desirable for the sake of
performance and/or resource usage. I'm in doubts about it. One of the
fundamental rules says that the semantics of a call should be clear itself,
i.e, if written
some_very_complex_class v;
foo(v);
I should expect that the status of "v" won't change after the call. If it
can be changed, use
foo(&v);
which explicitely tells you about it. In other words, "all reference
arguments must be const, otherways use pointers". It's a good rule from the
point of view that when you read someone's code it's more self-documented
because in this case you don't have to look at the function
definition/docs/implementation.
But there's another rule: "Use pointers when and only when it potentially
can be 0, otherways use references". This rule also looks logical, although
I technically can pass "a reference to the null-pointer", but I don't
consider this case because it's not well-formed code.
So, my question is just about BOOST gurus' preferences. What do you
prefere - non-const references or non-const pointers when you have to use
them as function arguments and when a pointer (if used) cannot be 0?
I'm sorry if this question had been already discussed - just point me out.
McSeem