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