同じオブジェクトを指すポインタは等しい、つまり &a == &a は常に正しいでしょ。
で、ポインタは必ず(なんらかの)整数型に変換でき、情報を保ったまま戻すことが出来る、
つまり (T *)(intptr_t)&a == (T *)(intptr_t)&a でしょ。
それでも、 (intptr_t)&a == (intptr_t)&a は保証されないのかな。