Для boost::weak_ptr
определено operator<
, чтобы его можно было использовать в ассоциативных контейнерах.
Мой вопрос таков: стабилен ли порядок сортировки нескольких weak_ptr
объектов, даже если некоторые из них меняются на нулевой счет? Разве это не портит контейнеры типа std::set
?
Пример:
using namespace boost;
shared_ptr<A> sptrA1(new A);
weak_ptr<A> wptrA1 = sptrA1;
weak_ptr<A> wptrA2;
{ // begin Scope 1
shared_ptr<A> sptrA2(new A);
wptrA2 = sptrA2;
assert(wptrA1 < wptrA2); // assert #1
}
assert(wptrA1 < wptrA2); // assert #2
- Будет ли утверждение № 2 всегда верным, если утверждение № 1 истинно?
- Находится ли
wptrA2
в одном и том же состоянии до и после Прицела 1?