Thread overview
static opDispatch
Jun 30, 2013
David
Jun 30, 2013
Artur Skawina
Jun 30, 2013
David
Jun 30, 2013
bearophile
June 30, 2013
struct Bla {
    static @property
	Bla opDispatch(string s)() const {
		pragma(msg, s);
		return Bla();
	}
}

void main() {
	Bla.abc;
}

---

abc
/d675/f256.d(10): Error: no property 'abc' for type 'Bla'
/d675/f256.d(10): Error: Bla is not an expression

---

I guess static opDispatch does not exist? Any reasons why it doesn't exist or is it just a bug? It looks like a bug, since the pragma prints. Returning nothing, doesn't change anything btw.
June 30, 2013
On 06/30/13 12:36, David wrote:
> struct Bla {
>     static @property
> 	Bla opDispatch(string s)() const {
> 		pragma(msg, s);
> 		return Bla();
> 	}
> }
> 
> void main() {
> 	Bla.abc;
> }
> 
> ---
> 
> abc
> /d675/f256.d(10): Error: no property 'abc' for type 'Bla'
> /d675/f256.d(10): Error: Bla is not an expression
> 
> ---
> 
> I guess static opDispatch does not exist? Any reasons why it doesn't exist or is it just a bug? It looks like a bug, since the pragma prints. Returning nothing, doesn't change anything btw.

Try removing the 'const' - static methods have no 'this'.

Error reporting for optional templated methods that exist, but fail
to instantiate, can be very misleading; calling such methods explicitly
sometimes helps to identify the problem.

artur
June 30, 2013
> Try removing the 'const' - static methods have no 'this'.
> 
> Error reporting for optional templated methods that exist, but fail
> to instantiate, can be very misleading; calling such methods explicitly
> sometimes helps to identify the problem.
> 
> artur
> 

Oh wow, so easy ... Thanks I tottally did not see that const.
June 30, 2013
Artur Skawina:

> Error reporting for optional templated methods that exist, but fail
> to instantiate, can be very misleading; calling such methods explicitly
> sometimes helps to identify the problem.

http://d.puremagic.com/issues/show_bug.cgi?id=10511

Bye,
bearophile