DIP69 - Implement scope for escape proof references

Dmitry Olshansky via Digitalmars-d digitalmars-d at puremagic.com
Thu Dec 11 14:04:58 PST 2014


12-Dec-2014 00:41, Walter Bright пишет:
> On 12/11/2014 4:47 AM, Manu via Digitalmars-d wrote:
>> On 8 December 2014 at 07:29, Walter Bright via Digitalmars-d
>> <digitalmars-d at puremagic.com> wrote:

>> I don't have the perfect proposal, but I feel very strongly about 2
>> things:
>> 1. It must not be a storage class; the concept was a disaster with
>> ref, and I struggle with this more frequently than any other 'feature'
>> in D.
>
> I simply do not understand why distinguishing beteen ref and not-ref is
> a cornerstone of everything you do.
>

I would hazard a guess that const T& is something lots of C++ got 
addicted to as the most common way of parameter passing. There is 
nothing exactly like that in D, auto ref was quite close but only for 
templates and it instantiates 2 distinct bodies for ref and non-ref at 
the moment.

It allows easy pass by ref for both r-values and l-values with logical 
const and is likely what Manu is referring(!) to.

Truth be told it's not always the fastest way, in fact Boost C++ has 
template for optimal parameter passing - call_traits<T>::param_type  but 
it must be too cumbersome for actual use as I never seen it used in the 
wild.
http://www.boost.org/doc/libs/1_57_0/libs/utility/call_traits.htm

-- 
Dmitry Olshansky


More information about the Digitalmars-d mailing list