I just got and idea, what about allowing to overload methods based on if they're static or not. This would allow the following code:

class Foo
{
    void bar () { writeln("bar"); }   
    static void bar () { writeln("static bar"); }
}

Foo.bar; // would print "static bar"
auto foo = new Foo;
foo.bar; // would print "bar"

When inside a class/struct there would be an ambiguity if both a static and a non-static method is present. To solve this one would always need to prefix the static method call with the class/struct name, i.e. "Foo.bar()". To call the instance method I see two options, either the method call needs to be prefixed with "this", i.e. "this.bar()" or all calls that are not prefixed would always call the instance method.

Thoughts?

--
/Jacob Carlborg

Reply via email to