On 12/27/11 12:08 AM, Andrej Mitrovic wrote:
On 12/27/11, Andrei Alexandrescu<seewebsiteforem...@erdani.org> wrote:
It actually does, as per the unittests. Even if it currently does by
@property being too lax, it should continue to work.
It actually doesn't:
struct FooImpl
{
int _x;
@property int x() { return _x; }
@property void x(int val) { _x = val; }
auto dup() { return FooImpl(); }
auto dispose() { }
}
void main()
{
RefCounted!FooImpl foo;
foo.x = 1; // NG
}
Sure you could make a property return ref, but that's circumventing
the setter and allowing direct access to the field from client-code.
I've ran into this issue before when playing with opDispatch but I
couldn't figure out a workaround.
Sorry for being unclear - when I wrote "should work" I meant "it's a bug
if it doesn't".
So construction of objects
needs to be handled by RefCounted itself - e.g. by forwarding
constructor parameters.
But it doesn't do that currently?
The prototype does not define a variadic forwarding constructor.
Andrei