No, this is not guaranteed. This statement may cause:
assert(&typeid(int) == &typeid(int));
Although a rather stupid compiler is required to create this fire, it can happen. In practice, this will fail if the typeid are compared across the dynamic boundaries of the library:
assert(&typeid_of_int_in_lib1() == &typeid_of_int_in_lib2());
It will almost certainly cause.