Rainer Schuetze wrote:

On 29.06.2013 00:22, Walter Bright wrote:
>> Any parameter of type C is also lowered to shared_ptr!C.
>
> I don't see how lowering C to shared_ptr!C and lowering share_ptr!C to C
> can work?

I don't see why you would want to lower from shared_ptr!C to C. It's only inside shared_ptr where access to the non-lowered C is needed, e.g. by disabling the lowering inside the shared_ptr. I was referring to "raw" references before, so the lowering would be better shared_ptr!(__raw(C)). But I agree, having the lowering include the original seems bad.

I realized a worse flaw with my proposal: it doesn't solve the assignment problem it was meant to. shared_ptr implemented as a struct does not have full control of the assignment, but is only called for the postblit and the destruction of the previous value. It has no way to put a lock around the full assignment. Still thinking too much C++...

Sorry for the noise.

Reply via email to