Boost logo

Boost :

Subject: Re: [boost] Synapse library review starts today December 2
From: Emil Dotchevski (emildotchevski_at_[hidden])
Date: 2016-12-04 05:45:03


On Sat, Dec 3, 2016 at 10:07 AM, Klemens Morgenstern <
klemens.morgenstern_at_[hidden]> wrote:

> Am 03.12.2016 um 18:56 schrieb Peter Dimov:
>
>> Klemens Morgenstern wrote:
>>
>> But really having a void* as part of a public interface would've given
>>> you a no, even if everything else was perfect with this library.
>>>
>>
>> This objection of yours doesn't make much sense to me. What problem are
>> you trying to prevent? Objects of different types don't typically share the
>> same address, so type safety can hardly be violated. Well, I suppose you
>> could use the wrong member of a union by mistake.
>>
> Or a boost.variant.

In Synapse, emitters are identified by their address, so union members
represent the same emitter, by definition. Even if somehow the type of the
emitter participated in its identifier, you'd have the same problem in case
of union members of the same type.

> Or you could just by coincidence have a new object at the address of an
> old one, long after it has been deleted - which is actually easy to do,
> since you can put the objects that emit on the stack.

Use shared_ptr with null deleter and weak_ptr to avoid that. See "Emitter
lifetime safety" in http://zajo.github.io/boost-synapse/Tutorial.html.

Emil


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk