On Wednesday, 9 September 2015 at 18:50:45 UTC, Walter Bright wrote:
On 6/7/2013 4:21 PM, Manu wrote:
So from my dconf talk, I detailed a nasty hack to handle member function
pointers in D.

https://www.digitalmars.com/articles/b68.html

Here's on automatic version

import std.traits : Parameters;

enum MemberFunc(alias Type, string member) = (ref Type self, Parameters!(__traits(getMember, Type, member)) args) => mixin(q{self.} ~ member ~ q{(args)});

unittest
{
    static struct A
    {
        bool test;
        void b(int arg)
        {
            test = arg == 4;
        }
    }

    A a;
    auto func = MemberFunc!(A, "b");
    func(a,4);
    assert(a.test);
}

Reply via email to