import std.stdio;
class C { void opDispatch(string s, ARGS...) (ARGS args) { writefln("S.opDispatch('%s', %s)", s, typeof(args).stringof); } void foo (string s) { writeln("in asd"); } } void main() { C c = new C; c.foo("bar"); // calls C.foo c.foo("bar", "bar"); // calls C.opDispatch c.foo(3); // calls C.opDispatch }