
On 08.06.2016 23:57, Emil Dotchevski wrote:
On Wed, Jun 8, 2016 at 2:29 PM Rainer Deyke
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"). One advantage of this technique is that it decreases physical coupling. Another advantage of this technique is that it allows the copy-on-write optimization (which is an implementation detail of the interface class, but a potentially important one). Are arguing that my use of pimpl isn't true pimpl? If so, I disagree. I use all aspects of the pimpl idiom. I receive all of the benefits of the idiom and pay all of the costs. That I just happen to value what is generally perceived as at best a secondary benefit (i.e. the possibility of copy-on-write) over what is generally perceived as the primary benefit (i.e. decreasing physical coupling) does not change that. -- Rainer Deyke (rainerd@eldwood.com)