>>178What should be allowed to be used is determined by a standard of quality. If someone is relying on out of bounds array indexing to get some effect, I would argue that code isn't reliable and shouldn't be used for anything important (anything at all). These issues usually aren't intentional. Otherwise, if the program is relying upon machine dependent behavior, for instance, the way signed integers overflow, then there should be a way to communicate this to the compiler. That way the compiler can select a way to get the intended behavior on the target platform. If the behavior can't be described in this way, then the programmer can write routines in inline assembly, one for each target platform, and then may invoke these routines from the portable code base. It isn't safe to rely on undefined behavior even if you are only targeting one platform, since subtle changes in the compiler or compiler options may throw off the resulting behavior.