From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Smart pointers and delegation
Date: Thu, 10 Aug 2017 09:56:19 +0200
Date: 2017-08-10T09:56:19+02:00 [thread overview]
Message-ID: <omh3iv$1flt$1@gioia.aioe.org> (raw)
In-Reply-To: omg407$2an$1@franka.jacob-sparre.dk
On 2017-08-10 00:57, Randy Brukardt wrote:
> "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message
> news:omee2p$145a$1@gioia.aioe.org...
>> It cannot replace smart pointer, because it does not manage the object. So
>> the question is whether implicit dereference can be a part of smart
>> pointer:
>>
>> target <-- smart pointer with implicit dereference
>>
>> This does not work for multiple reasons either.
>
> I find this surprising. It works in the use-cases I've tried. (I haven't
> tried a pure Smart-Pointer, although others have, since I prefer to include
> such things in a larger abstract - like a container).
It will have a discriminant, to start with. Smart pointer must be
aggregation-friendly.
>> So the solution could only be ugly heavy-weighted:
>>
>> target <-- smart pointer
>> || |
>> || | operation to produce helper object
>> || V
>> target <-- helper object with implicit dereference
>>
>> This has no advantages whatsoever. Ergo, implicit dereference has no use
>> for smart pointers.
>
> Even if true, the "real problem" however remains. If you can safely and
> efficiently copy the designated object, then you have no need for
> Implicit_Dereference. If you need "return-by-reference", though, you need
> some special mechanism to do that.
I don't want
A (I) := X;
taken literally. That is an abstraction inversion. I want it compiled
into more useful
Set (A, I, X);
My design of containers is that I effectively put a reference in the
form of a smart pointer into the container. I don't need return by
reference because I return a smart pointer, which is definite and
non-limited. I have no problem with life time because the reference
holds the object. I less problems with concurrent updates because the
reference has a count so that the update may deploy a transaction
scheme. And I tend to hide the referenced object type from public
interface to make it more safe.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2017-08-10 7:56 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-01 10:32 Smart pointers and delegation Dmitry A. Kazakov
2017-08-01 15:06 ` Dmitry A. Kazakov
2017-08-01 23:06 ` Randy Brukardt
2017-08-02 6:20 ` Dmitry A. Kazakov
2017-08-03 3:36 ` Randy Brukardt
2017-08-03 7:40 ` Dmitry A. Kazakov
2017-08-04 23:03 ` Randy Brukardt
2017-08-05 8:33 ` Dmitry A. Kazakov
2017-08-07 22:39 ` Randy Brukardt
2017-08-08 6:27 ` Dmitry A. Kazakov
2017-08-09 0:27 ` Randy Brukardt
2017-08-09 7:37 ` Dmitry A. Kazakov
2017-08-09 22:57 ` Randy Brukardt
2017-08-10 7:56 ` Dmitry A. Kazakov [this message]
2017-08-11 0:17 ` Randy Brukardt
2017-08-11 6:43 ` Dmitry A. Kazakov
2017-08-11 20:37 ` Randy Brukardt
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox