Problem with aliasing member function

rjframe dlang at
Sun Aug 18 23:43:17 UTC 2019

On Sun, 18 Aug 2019 19:17:16 +0000, Andrey wrote:

> Here in tester I want to alias a template method and call it on object
> if this object isn't null. But I don't understand how to do it.
> How to solve the problem?

I don't think you can alias an object method directly; three methods I 
know of:

struct Struct {
    void run(int number) {
        import std.stdio;
        writeln("run ", number);

// Pass the object itself.
void func1(alias obj)(int number) if (isFunction!( {;

// Pass the object and the name of the method.
void func2(alias obj, string method)(int number)
        if (__traits(compiles, "obj." ~ method ~ "(number);")) 
    mixin("obj." ~ method ~ "(number);");   

// Pass the method at runtime.
void func3(void delegate(int) f, int number) {

void main() {
    Struct obj;
    func2!(obj, "run")(2);
    func3(&, 3);

Also, you don't want to name something "Object"; the base class is called 
Object -- the struct shadows it but you may run into some bug or confusion 


More information about the Digitalmars-d-learn mailing list