Static method conflicts with non-static method?

H. S. Teoh hsteoh at quickfur.ath.cx
Thu Apr 26 22:07:03 PDT 2012


Is this a bug? Code:

	import std.stdio;

	struct S {
		static int func(int x) { return x+1; }
		int func(int x) { return x+2; }
	}

	void main() {
		S s;
		writeln(s.func(1));
	}

DMD (latest git) output:

	test.d(10): Error: function test.S.func called with argument types:
		((int))
	matches both:
		test.S.func(int x)
	and:
		test.S.func(int x)

The error message is unhelpful, but basically the complaint is that the
static method is conflicting with the non-static method.

But I would've thought it is unambiguous; I'd expect that s.func should
resolve to the non-static method, and S.func to the static method. After
all, no object is needed to invoke the static method, and the static
method cannot be invoked without an object.


T

-- 
The early bird gets the worm. Moral: ewww...


More information about the Digitalmars-d mailing list