DIP 1016--ref T accepts r-values--Community Review Round 1
Manu
turkeyman at gmail.com
Fri Jul 20 17:31:21 UTC 2018
On Fri, 20 Jul 2018 at 03:10, Dgame via Digitalmars-d
<digitalmars-d at puremagic.com> wrote:
>
> On Friday, 20 July 2018 at 09:39:47 UTC, Nicholas Wilson wrote:
> > On Friday, 20 July 2018 at 09:03:18 UTC, Dukc wrote:
> >> appending something (like .byRef or byRef!long, the latter
> >> making an implicit type conversion)
> >
> > That can't work: either it returns an expired stack temporary
> > (*very* bad), or allocates with no way to deallocate (bad).
>
> What about something like this?
>
> ----
> import std.stdio;
>
> ref T byRef(T)(T value) {
> static T _val = void;
> _val = value;
>
> return _val;
> }
>
> void foo(ref int a) {
> writeln("A = ", a);
> }
>
> void main() {
> foo(42.byRef);
> foo(23.byRef);
> }
> ----
Substitutes one class of edge case with a different style of edge
case. This general approach doesn't solve my biggest bugbear.
More information about the Digitalmars-d
mailing list