О частных операторах копирования/перемещения, операторах и т. д.C++

Программы на C++. Форум разработчиков
Anonymous
О частных операторах копирования/перемещения, операторах и т. д.

Сообщение Anonymous »

Недавно я занимался бэкпортированием некоторого программного обеспечения Qt для сборки с Qt 5.9, что (среди прочего) означало поиск решения для того факта, что Q_DISABLE_MOVE(class) и комбинированный макрос anti-copy+move были представлены только в Qt 5.13.
Я понимаю преимущества этих механизмов в предотвращении ошибок кодирования, но они в значительной степени спорны, когда вы выполняете резервное копирование путем добавления конструкции #ifdef/#else для поддержки более ранних версий, в данном случае Qt.
В рассматриваемом проекте имеется множество заголовочных файлов, использующих QDISABLE_COPY_MOVE, поэтому самый простой и быстрый способ их компиляции — через аргумент условного компилятора: -DQ_DISABLE_COPY_MOVE=Q_DISABLE_COPY . При этом код компилируется и запускается.
Мой вопрос: есть ли другие преимущества в отключении оператора перемещения и связанных с ним операторов с точки зрения производительности, использования памяти или размера двоичного файла? Недостающие макросы легко добавить, и они достаточно малы, для этого требуется лишь изменить множество файлов...

Подробнее здесь: https://stackoverflow.com/questions/798 ... rators-etc

Вернуться в «C++»