inout delegate

Nicholas Wilson via Digitalmars-d digitalmars-d at puremagic.com
Sat Oct 8 23:04:06 PDT 2016


On Friday, 7 October 2016 at 02:13:21 UTC, Manu wrote:
> Perhaps you'd like to give it a go ;)
>
> Something like:
>
> template delegateTypeForInoutMethod(T, string method)
> {
>   alias delegateTypeForInoutMethod = [write lots of stuff here];
> }
>
> struct S
> {
>   inout(int)[] f(ref const(int) arg) inout pure nothrow { 
> return [ arg ]; }
> }
>
> static assert(delegateTypeForInoutMethod!(const(S), "f") ==
> const(int)[] delegate(ref const(int)) pure nothrow, "You 
> failed!");

https://gist.github.com/thewilsonator/06fe58b06eb7b2d97a675f95bb4d3fac

passes the static assert. Sorry for the ugly mess, I don't have 
much time to clean it up today.

Lesson: never be afraid to resort to mixins.


More information about the Digitalmars-d mailing list