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));

Reply via email to