В C++ существует оператор reinterpret_cast, смысл которого заключается в приведении между типами, несовместимыми друг с другом.
Однако подобные преобразования нарушают strict aliasing rule, что провоцирует неопределённое поведение. Те же преобразования, которые этого правила не нарушают, укладываются в const_cast, static_cast и dynamic_cast.
В чём же тогда заключается смысл существования данного оператора, если его использование нарушает стандарт?
(TYPE)(expession)(конечно, помнить (и проверять на всех платформах) о strict-alasing (или отключать его при компиляции файла) все рауно придется) – avp Sep 09 '17 at 09:20используйте старый сишный cast— зачем использовать инструмент, у которого нет никаких гарантий, если есть железобетонно работающее решение (тот жеmemcpy, к которому, кстати, так и хочется приписатьstatic_assertс проверкой на равенство размеров типов).помнить ... все равно придется— невозможно предсказать, как поведёт себя оптимизатор при смене версии компилятора на более новую. Есть стандарт, и есть даваемые им гарантии, делающие язык платформонезависимым. – Arhadthedev Sep 09 '17 at 09:37const_castто, именно его и нужно использовать. – yrHeTateJlb Sep 09 '17 at 19:34