On Sunday, 13 January 2013 at 19:35:08 UTC, Maxim Fomin wrote:
On Sunday, 13 January 2013 at 19:16:36 UTC, Zhenya wrote:
Hi!
Is it all right with it:
struct Foo
{
struct Bar
{
void opCall()
{
writeln("non-static");
}
}
Bar bar;
static struct Anotherbar
{
static void bar()
{
writeln("static");
}
}
alias Anotherbar this;
}
void main()
{
Foo f;
f.bar();
Foo.bar();//fils with message:type Bar is not an expression
Foo.Bar b;
b();//this works however
}
?
According to spec http://dlang.org/class.html#AliasThis
undefined lookups are forwarded to AliasThis member. But in
your case Foo struct has bar member, so no further resolution
is performed. Rename the member and the code compiles.
Note, this seems to come from neighbor thread
http://forum.dlang.org/thread/uelmpwwckcveimpbd...@forum.dlang.org.
I think it is simpler to rename functions than create bunch of
structs just to be able to have eponymous non-static and static
functions.
I just want very much avoid renaming function,it's principle for
me.
So I would like to know is my sample right or no.