The C++ standard requires that the value_type of an allocator match the value_type of the container that uses that allocator. (table 98, first row).
libc++ has, for a long time, caused a compile-time failure if this is not true for many containers (list, string, unordered_[multi]map, unordered_[multi]set and vector), but not for all of them. Specifically, deque, forward_list, [multi]map and [multi]set are missing this check.
I will be adding these checks very soon (tomorrow). These will turn run-time undefined behavior into a compile time error.
While I don’t anticipate any breakage, it is possible.