How to define variadic delegate with a ref/out argument?

Jerry A. Labuurii at gmail.com
Fri Nov 17 06:21:50 UTC 2017


On Friday, 17 November 2017 at 05:08:23 UTC, pham wrote:
> struct DelegateList(Args...)
> {
> public:
>     alias DelegateHandler = void delegate(Args args) nothrow;
>
>     DelegateHandler[] items;
>
>     void opCall(Args args) nothrow
>     {
>         foreach (i; items)
>             i(args);
>     }
> }
>
> DelegateList!(string, int) list; // Compile OK so far
> DelegateList!(string, int*) list2; // Compile OK so far
> DelegateList!(string, ref int) list3; // Compile error -> How 
> to make it work?
>
> Thanks
> Pham

The only way I know of is using  a template which behaves like a 
reference.
Which can be done with nullableRef I suppose. Haven't actually 
tried it.

import std.typecons : NullableRef, nullableRef;

DelegateList!(NullableRef!int)(nullableRef(some_int));



More information about the Digitalmars-d-learn mailing list