> > The way call_traits is currently implemented,
> > call_traits<int&>::value_type is an int&,
> > not an int.
>
> This is the correct behavior.  If you are storing an "int &" and want to
> return it by value, you will return an "int &".

This is some new usage of the term "by value" with which I'm not familiar.
When I return an "int&", I call that return "by reference".  ;-)

I don't doubt that there is a use for the current implementation.  What I'm
saying is that calling it "value_type" is wrong because that term is used
already in standard C++, and with a different meaning.
call_traits::value_type should be like iterator_traits::value_type -- a
non-const, non-reference that can be used to store temporary variables in
algorithms and whatnot.  I suspect that this is the more common usage
scenario (<-- blind asseriton), and it is the behavior people would expect.

Since there is a need, as you say, for a typedef that can be used to store a
type T and/or return it, perhaps there should be a different typedef, like
"member_type" or "return_type" (or both!).

Eric



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

Reply via email to