For crying out loud, shared fails too:
class Foo
{
shared this()
{
value = true;
}
@property bool value() { return true; }
@property void value(bool value) { }
}
void main()
{
auto foo1 = new Foo;
auto val1 = foo1.value; // fail
}