Код: Выделить всё
[[no_unique_address]]Ссылаясь на стандарт C++ и/или ABI Itanium C++, какие существуют причины избегать использования [[no_unique_address]] на большинстве или на всех участниках?
Например:
- Есть ли при этом проблемы с безопасностью, например, опасения по поводу перезаписи объекта в хвостовом отступе при использовании оператор=? Этот ответ подразумевает, что, возможно, да, но неясно, является ли это ошибкой в реализации std::copy, а также я не могу воспроизвести ее с помощью современного clang.
Я не нашел в стандарте ничего, что говорило бы, что оператор = может вызвать здесь проблему. Кроме того, похоже, что любая проблема с [[no_unique_address]] также применима к базовым классам, в которые помещаются члены подкласса с заполнением хвоста. - Существуют ли проблемы с эффективностью, например, требуется ли больше кода для загрузки или сохранения значений? Учитывая, что выравнивание по-прежнему правильное, я не понимаю, почему это так.
Подробнее здесь: https://stackoverflow.com/questions/793 ... -the-place