Re[108]: Когда это наконец станет defined behavior?
От: B0FEE664  
Дата: 22.08.23 15:20
Оценка: :)
Здравствуйте, vopl, Вы писали:

V>>> Он относится ко всему copy целиком, со всеми его эффектами, включая связность с lifetime

BFE>> Ну попробуйте это обосновать.
V>Ну, обоснование у меня вряд ли получится сформулировать. Вместо обоснования — приведу свою логику рассуждений:
V>нет оснований полагать что в стандарте под выдавливанием copy пониматся не copy а некий "copy part", так как там не указано, какие именно аспекты copy будут выдавлены а какие — нет. Таким образом я считаю что имеется ввиду весь copy целиком.

lifetime — это не результат создания объекта. lifetime — это свойство объекта, присущее объекту в некоторые отрезки выполнения программы (от конца конструктора до начала деструктора).
Если это свойство выкидывается вместе с конструктором, то в коде примера ниже someDictionary вообще не начинает жить, а следовательно, const должен игнорироваться полностью, следовательно объект someDictionary можно менять (ведь его время жизни ещё не началось):
std::map<int, int> buildMap()
{
    std::map<int, int> result;
    return result;            
}

const std::map<int, int> someDictionary = buildMap();
someDictionary[42] = 43;


А это некоторый абсурд, так что выкидывать lifetime вместе с конструктором нельзя.
И каждый день — без права на ошибку...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.