On Friday, 4 May 2012 at 14:34:20 UTC, Timon Gehr wrote:
It is an attribute:
int x;
ref {
int foo(){ return x; }
int bar(){ return x; }
}
ref:
int qux(){ return x; }
static assert(typeof(&qux).stringof == "int function() ref");
Thanks, this is news to me! I never noticed that ref was actually
a function attribute.
The following are legal declaration statements:
extern(C) void function() foo;
pure void function() bar; // not just linkage attributes
So I think it's a plain bug that this isn't:
ref void function() foo;