LINUX.ORG.RU

История изменений

Исправление monk, (текущая версия) :

Аргумент «это же херотень какая-то, в этом нет смысла, как это реализовывать?» не принимается, потому что «конкретизируйте ваши претензии, пожалуйста».

То есть пример конвертации double* в (struct {int; char; double})* никто не привёл? Очень странно.

Я всегда думал, что такие ловушки только в законодательстве попадаются (иначе юристам и бухгалтерам будут намного меньше платить). Но даже в законодательстве на любую неоднозначность есть статья-разъяснение какого-нибудь уважаемого юриста «законодатель имел в виду …, поэтому статью закона … надо трактовать как …».

P.S. Нашёл трактовку: https://stackoverflow.com/questions/98650/what-is-the-strict-aliasing-rule

Исходная версия monk, :

Аргумент «это же херотень какая-то, в этом нет смысла, как это реализовывать?» не принимается, потому что «конкретизируйте ваши претензии, пожалуйста».

То есть пример конвертации double* в (struct {int; char; double})* никто не привёл? Очень странно.

Я всегда думал, что такие ловушки только в законодательстве попадаются (иначе юристам и бухгалтерам будут намного меньше платить). Но даже в законодательстве на любую неоднозначность есть статья-разъяснение какого-нибудь уважаемого юриста «законодатель имел в виду …, поэтому статью закона … надо трактовать как …».

А здесь просто реализация. Кстати, в фактической трактовке просто разрешено указатель на что угодно приводить к указателю на что угодно. double* в (struct {int;})* прекрасно кастуется без предупреждений в любом компиляторе от gcc и clang до tcc и msvc.