... и оптимизации включишь.
зачем? Он тут не потребуется
Алло Ты говоришь, что мува не будешь, но при этом твой класс имеет удаленный мув конструктор Конечно будет копирование
так нам тут копирование выгоднее мува. Пушто это лишняя копия, которую компилятор уберёт
компилятор и мувы тогда уберёт
Ну вот что-то не убирает, судя по экспериментам. Может, с -O3 уберёт, хз
Дак он и в твоём примере не убирает, его там изначально нет
Мы, наверное, разные примеры смотрим🤷♂
Я на этот смотрю https://t.me/ProCxx/446247
Раскомментируй make_unique и сравни. make_unique будет дороже на 1 конструктор
При чём тут make_unique, ты сказал что тебе копирование выгоднее мува. Но у тебя тут нет нигде копирования
В конструкторе unique_ptr вызваем конструктор копирования new ObjectSet(const &) Но копирования не происходит, спасибо оптимизациям
Нет там вызова конструктора копирования. И о каких оптимизациях речь если они выключены?
Зато вызов move ctor-а при make_unque удаляется при O2. То есть имеем и код чище, и лищних конструкторов нет
даже с -O3 не убрал https://godbolt.org/z/1edr8dP7j
Да, там он нужен, потому что синтаксис уже вызова конструктора внутри make_unique. Но действительно, не убирает его вызов компилятор.
Обсуждают сегодня