|
Boost : |
Subject: Re: [boost] Pimpl Again?
From: Emil Dotchevski (emildotchevski_at_[hidden])
Date: 2016-06-09 14:59:17
On Thu, Jun 9, 2016 at 5:19 AM, Rainer Deyke <rainerd_at_[hidden]> wrote:
> On 08.06.2016 23:57, Emil Dotchevski wrote:
>
>> On Wed, Jun 8, 2016 at 2:29 PM Rainer Deyke <rainerd_at_[hidden]> wrote:
>>
>> 3. I want a class to have value semantics, but use a copy-on-write
>>> implementation behind the scenes.
>>>
>>
>> Pimpl is not about semantics, it's about reducing physical coupling. It's
>> not about the pointer pointing at the private implementation object
>> (which,
>> being private, is an implementation detail anyway), it's about the private
>> implementation *type* being left incomplete.
>>
>
> Pimpl is a technique where the implementation of a class is moved to a
> separate implementation class (the "impl"), to which the interface class
> maintains a pointer (the "p").
The "p" stands for "private" not for pointer. The defining property of the
pimpl idiom is that the private implementation type is left incomplete in
the interface: the pointer is opaque. For example, if you implement
copy-on-write using a pointer to a type that is defined in the interface,
you're not using pimpl. So, logical design (semantics), including copy
semantics, is orthogonal to pimpl.
Emil
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk