Re[6]: v.emplace_back(v[0])
От: uzhas Ниоткуда  
Дата: 11.10.17 09:04
Оценка:
Здравствуйте, N. I., Вы писали:

NI>Это просто следствие непонимания некоторыми стандартизаторами принципов составления строгих формальных описаний.


Со строгостью и понятностью в стандарте плоховато. Могли бы в каждой новой версии вводить хотя бы "очевидные" для стандартизаторов (но неочевидные остальным) пояснения\уточнения. То же разыменование нулевого указателя (вспомним недавнее длинное обсуждение) вызывает массу вопросов когда это UB, а когда — нет.

NI>Что касается v.emplace_back(v[0]), то стандарт не определяет порядок noexcept инициализации нового объекта и инвалидации v[0] в случае реаллокации. А это значит, что теоретически допустима conforming реализация, которая бы делала v[0] невалидным до конструирования вставляемого объекта


Порядок не обязательно определять. Есть требование к std::vector (и emplace_back и реаллокация под его контролем) выполнить контракт (в каком порядке и что он будет делать — его забота). Не вижу тут возможности для conforming реализации допустить UB.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.