Обратиться из деструктора элемента контейнера к контейнеру
От: Alexander G Украина  
Дата: 10.09.09 12:23
Оценка:
Можно ли обратиться из деструктора элемента контейнера к контейнеру, если элементы удаляются через clear, pop_back, erase и на момент вызова деструктора контейнера он пуст ?
Русский военный корабль идёт ко дну!
Re: Обратиться из деструктора элемента контейнера к контейне
От: Кодт Россия  
Дата: 10.09.09 14:22
Оценка: 6 (1) +1
Здравствуйте, Alexander G, Вы писали:

AG>Можно ли обратиться из деструктора элемента контейнера к контейнеру, если элементы удаляются через clear, pop_back, erase и на момент вызова деструктора контейнера он пуст ?


Рискованное это дело.

Понятно, что любой контейнер во время исполнения любого метода, меняющего его состояние, не даёт никаких гарантий.
Конечно, некоторые из его частей, — например, итераторы, остающиеся валидными в результате данной операции, — скорее всего, остаются валидными и в ходе операции.
Но вот, например, размер...
Опять же, если контейнер деревянный и перебалансирует дерево — то разыменовать итератор получится, а навигация уже может отказать.
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Перекуём баги на фичи!
Re[2]: Обратиться из деструктора элемента контейнера к конте
От: Alexander G Украина  
Дата: 11.09.09 05:59
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Рискованное это дело.


К>Понятно, что любой контейнер во время исполнения любого метода, меняющего его состояние, не даёт никаких гарантий.


Некоторые случаи работать не будут, понял почему, но есть ли пункт для общего случая в Стандарте?
Русский военный корабль идёт ко дну!
Re[3]: Обратиться из деструктора элемента контейнера к конте
От: Кодт Россия  
Дата: 11.09.09 08:21
Оценка:
Здравствуйте, Alexander G, Вы писали:

AG>Некоторые случаи работать не будут, понял почему, но есть ли пункт для общего случая в Стандарте?


Специально не искал, но здравый смысл подсказывает мне, что — что бы там стандарт ни говорил, я на это минное поле не пойду.
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.