http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59872
--- Comment #3 from David Krauss <potswa at mac dot com> --- Thanks, I'm working on it now. Is there some precedent for this kind of SFINAE in libstdc++? The hard part is getting the style right. Metaprogramming looks weird in 80 columns. As for the defect report, my thoughts exactly. Maybe we can extend __allocator_always_compares_equal to evaluate such an equality check in a SFINAE, constant expression context. Then a user-defined constexpr bool operator == ( my_alloc, my_alloc ) { return true; } will satisfy the condition, but anything else will default.