On Monday, 9 November 2015 at 22:06:22 UTC, Alex Parrill wrote:
Check out the following code:
struct Test {
int foo() {
return 2;
}
int bar() @property {
return 2;
}
}
pragma(msg, typeof(Test.foo)); // Prints int(); i.e. a
zero-argument function that returns an int
pragma(msg, typeof(Test.bar)); // Prints int; i.e. a plain int
But the compiler is lying!
void main() {
auto a = Test();
auto aa = &a.bar; // if type of a.bar is int
writeln(*aa); // why: Error: can only * a pointer, not a 'int
delegate() @property'
}
AFAIK when @property was introduced, it was expected that after
a deprecation period, calling non-property functions without
parenthesis would be invalid, but I don't think that panned
out. It's still good for documentation.
If this feature will be removed, it will be very lacking code,
like:
writeln = "Hello, world!";
:)
WBR,
Fyodor.