Boost logo

Boost Users :

From: Douglas Gregor (doug.gregor_at_[hidden])
Date: 2006-05-22 08:33:56


On May 22, 2006, at 5:56 AM, Setzer, Sebastian (ext) wrote:
>>> If you connect (disconnect) a new slot to a signal inside
>> of a slot of
>>> the same signal, what happens?
>>> - are the slots called which where connected before the signal was
>>> called,
>>> - or is new slot be called this time, too,
>>> - or is the behaviour undefined?
>>>
>>> I didn't find anything on this subject in the manuals. Even if the
>>> behaviour is undefined, that should be mentioned.
>>
>> It is unspecified whether that slot will be called this time
>> or not.
>> The "Notes" sentence of the connect function is meant to
>> convey this,
>> but the wording is rather poor:
>>
>> http://www.boost.org/doc/html/signalN.html#id2584315-bb
> Thanks. The next time I'll look harder...sorry.
>
> I assume there doesn't happen something evil (like if you use old
> iterators of std::vector after appending something), it's just not
> defined if the slot is called this time?

Nothing evil. We're using "unspecified" here, meaning that we don't
have to say when the slot is called and when it isn't, but it has to
work. Internally, we use linked lists to be sure that no iterators
are invalidated when a slot is inserted.

        Doug


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net