http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56437
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> 2013-02-25
00:11:16 UTC ---
C++11 allocators are not required to define any of these:
typedef T* pointer;
typedef const T* const_pointer;
typedef T& reference;
typedef const T& const_reference;
typedef unsigned size_type;
typedef int difference_type;
template <class U> struct rebind { typedef MyAllocator<U> other; };
But if your allocator fails to define any of them then std::string (and some of
the other containers) will fail to compile. This is a known issue.