Comment

Comment by reflexe

To add a little bit: the reason for that (or at least one of them) is strict aliasing rules: If the compiler had to assume that a write to an int* might change the value of a double&, that’ll cause it to avoid some optimization and maybe even perform expensive reads.

This is the reason that you are not allowed to alias a variable with another type (can be disabled using -fno-strict-aliasing) [1].

However, one of exceptions is char and std::byte. The compiler is not allowed to assume that a write to char& won’t affect the value of a double& for example [2].

[1]: https://www.gnu.org/software/c-intro-and-ref/manual/html_nod...

[2]: https://en.cppreference.com/w/cpp/language/reinterpret_cast....

parent reflexe 7 months ago

No comments yet

Be the first to share your thoughts.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton