Перша версія, безумовно, НЕ безпечна:
Операції над ітераторами, отримані викликом стандартного контейнера бібліотеки або функції елемента рядка, можуть отримати доступ до базового контейнера, але не повинні змінювати його. [Примітка. Зокрема, операції з контейнерами, які визнають недійсними ітератори, суперечать операціям ітераторів, пов'язаних із цим контейнером. - кінцева примітка]
з розділу 17.6.5.9
Зауважте, що це розділ про перегони даних, про який люди зазвичай думають у поєднанні з нарізкою різьби ... але власне визначення включає стосунки "трапляється раніше", і я не бачу жодних зв'язків впорядкування між декількома побічними ефектами push_back
в тут грає, а саме, помилка відключення посилань, здається, не визначається як упорядкована щодо конструювання копії нового хвостового елемента.
push_back
. Інший плакат відзначив помилку в ньому , що він неправильно обробляє описаний вами випадок. Ніхто інший, наскільки я можу сказати, не стверджував, що це не помилка. Не кажучи, що це переконливий доказ, просто спостереження.