Насколько я понимаю, GCC поддерживает все свои функции C99 в С++. Но как строгое сглаживание C99 обрабатывается в С++-коде?
Я знаю, что кастинг с C-кастами между несвязанными типами не является строгим сглаживанием и может генерировать неверный код, но как насчет С++? Поскольку строгий псевдоним не является частью стандарта С++ (это правильно?), GCC должен указывать саму семантику.
Я изображаю const_cast
и static_cast
между разными типами, поэтому они безопасны, а reinterpret_cast
могут нарушать строгие правила псевдонимов.
Это правильное понимание?