Re: offsetof() без UB
От: kov_serg Россия  
Дата: 24.03.25 06:56
Оценка: +1
Здравствуйте, LuciferSaratov, Вы писали:

LS>Я сейчас портирую большую кучу кода из конца 90-х, в которой очень многое завязано на offsetof() на не-POD типах. Код изначально для MSVC 98.

LS>Согласно стандарту это UB, но ведь есть законы, а есть правоприменительная практика.
LS>Как на практике обстоят дела? Мои целевые компиляторы это современный MSVC и clang под x86_64 и ARM.

А вы чего хотели в C++ даже операция сложения в общем случае это UB.
offsetof будет UB если у вас виртульное наследование используется, в остальных случаях проблем не должно быть. Если только особо одарённые стандартописатели не заложат основу для каких-нибудь новых чудо оптимизаций.
Так что просто используйте и пишите тесты, которые проверяют что оно всё еще работает как задумано
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.