I have seen it asserted several times now that the following code is not allowed by the C++ Standard:
int array[5]; int *array_begin = &array[0]; int *ar
In addition to the above answers, I'll point out operator& can be overridden for classes. So even if it was valid for PODs, it probably isn't a good idea to do for an object you know isn't valid (much like overriding operator&() in the first place).