Нет, но очевидно значения использовать нельзя
А куда он будет указывать?
The pointer is such that range [data(), data() + size()) is always a valid range, even if the container is empty (data() is not dereferenceable in that case).
Только объектов там уже не будет
Ресайз не удаляет память и не реаллоцирует если нужно меньше(тут надо 0)
Мы вызвали пустой конструктор, потом сделали resize(0) , а потом скопировали указатель на data в другой указатель
В этом случае скорее всего будет просто nullptr (не уверен насчёт msvc debug). При этом resize(0) просто уничтожит все объекты в векторе, не освобождая память, но data() скорее всего будет возвращать указатель на выделенную (но ещё не используемую) память.
А сколько выделяется памяти при вызове пустого конструктора std::vector ?
нисколько. это специфицировано
Ну вот я не уверен насчёт msvc только, где то там в debug было что то такое. Но это старая история, может давно и не так.
И это прекрасно
Но с c++ 17 точно, там же noexcept появился.
к стандарту ещё надо выпускать собрание комментариев, где вся подобная дедукция уже проведена, … в 72 томах
натравливать на стандарт систему автоматических доказательств страшно - она может сказать, что the only winning move is not to play
зачем мучать автоматику, если можно запереть на несколько месяцев в помещении без окон подгруппу по рефлексии? они все равно рефлексией не занимаются
Уже спрашивали чатгпт чо она думает про стандарт?
Обсуждают сегодня