Раньше это был старый трюк для доступа к представлению с плавающей точкой. Это означает, что он не является приведением и (если не перехвачен UB) даст другой результат, кроме 0 в обычной реализации.
По крайней мере, начиная с C99 и C ++ 11 (не уверены в предыдущих версиях), выполнение этого вызывает Undefined Behavior, поскольку он нарушает правило строгого псевдонима. Это правило было изобретено, чтобы помочь компилятору в их оптимизации, заявив, что переменная может быть доступна только через ее собственный тип или через символьный тип. Таким образом, когда компилятор сохранил число с плавающей точкой в регистре, он может предположить, что это число не будет изменено никаким целочисленным изменением (очень упрощенное объяснение).
Но так как он интенсивно использовался в старых программах, большинство компиляторов (даже последние) имеют возможность игнорировать правило строгого псевдонима.
Здесь ваш компилятор просто предупреждает вас, что этот код нарушает правило строгого алиасинга и может вызывать UB в некоторых реализациях.
TL / DR: использование приведенного указателя для доступа к другому типу является попыткой переинтерпретировать базовое представление и является UB как на C, так и на C ++. Это определенно не то же самое, что и актеры.