Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

From cpp reference: "Strict Aliasing: Given an object with effective type T1, using an lvalue expression (typically, dereferencing a pointer) of a different type T2 is undefined behavior, unless [non relevant exceptions omitted]".

In this case the expression has type bool and the underlying object has type int, so it is a straightforward strict aliasing violation.

With GCC you can compile with -fno-strict-aliasing to ignore this rule. But now you fall afoul of the rule that prevents accessing an invalid representation (i.e. a trap-representation) of an object. This rule is also described in the link I posted before, under the object representation paragraph.



ok, so in the case above, it's both (if strict aliasing is active). Makes sense now.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: