On 06/22/2017 12:06 PM, Boris-Barboris wrote:
> Hi
>
> https://dpaste.dzfl.pl/0def4e286564
>
> Is there a cleaner way to go than the one on the line 26? And why is the
> constructor
>
> /d475/f781.d(37): f781.UniquePtr!(A).UniquePtr.__ctor(DT)(ref scope
> UniquePtr!DT rhs)
>
> unfit for line 51?
> Is it because the expression " = UniquePtr!B.make()" cannot be
> interpreted as "scope ref"? It must release ownership of a pointer it
> holds, and looks like it cannot do it in this form.

(Going pedantic, you mean "struct constructor templates" or "templated struct constructors".)

No time to think about the rest of the design but just to get the code compiled, replace 'ref' with 'auto ref' like so:

    this(DT)(scope auto ref UniquePtr!DT rhs)
    {
        // ...
    }

Ali

Reply via email to