On 10/31/2011 10:13 PM, Michel Fortin wrote:
On 2011-10-31 17:07:31 +0000, Sean Kelly <s...@invisibleduck.org> said:

writeThis really shouldn't be const, it should be shared. The problem
was t
hat making writeThis a shared pass by value param implied a
synchronized loa
d for writeThis, which is undesirable for cas. So I left the
declaration of c
as as specified in TDPL and thought I'd figure this out later.

Perhaps it should be Unqual!(shared(V2)). That way if V2 is a pointer
it'll be tail-shared.

That won't work for class references though. For that you'd need my
"const(Object)ref" patch rusting in DMD's pull requests.


Something tells me that currently this is unachievable without casting away shared on the caller side, which is kind of awkward. I mean, we can either have a signature that demands writeThis be shared (which it should be), but then we've got a synchronized parameter load, or a signature in which writeThis is not shared, which is (a) not safe and (b) would demand callers to cast away shared and implementation to cast it in again for an assignment...

Reply via email to