On 2/27/15 7:17 AM, Manu via Digitalmars-d wrote:
There's no mention of const/immutable...? Surely we can have RC immutable things right? I can't see how that works here... but it's very important.
Yah. I've added a TODO.
I'm not clear on structs. What is the order for calls; postblit, opInc, opDec, destructor? 75% of my use cases today are thin structs that wrap C/C++ api's.
Structs don't get any special treatment with DIP74, only classes and interfaces.
There's no mention of 'scope'. I presume functions that receive scope RC arguments will have the opportunity to have opAddRef/opRelesae elided around the call?
That might be a future improvement. In fact that may be possible today; I've spoken to an ARC expert who read DIP74 and said Apple's ARC does not insert a retain() for a function call, i.e. it assumes functions only borrow unless they actually do keep a pointer (e.g. assign to a member or global), and only in that case inserts a retain().
If I'm not missing something, we can do this with DIP74 which will reduce the opAddRef/opRelease traffic quite a bit.
I wonder if some standard GetRefCount function should exist? Otherwise they will probably end up being named all sorts of different things. I guess I can't think of any value in a standardisation of the function otherwise though...
Yah, leave that to users. Andrei