Implement full support for non-pointer pointers in custom allocators for string.  This completes the custom pointer support for the entire library.

llvm-svn: 185167
diff --git a/libcxx/test/strings/basic.string/string.cons/alloc.pass.cpp b/libcxx/test/strings/basic.string/string.cons/alloc.pass.cpp
index 8eb9c84..3a8c571 100644
--- a/libcxx/test/strings/basic.string/string.cons/alloc.pass.cpp
+++ b/libcxx/test/strings/basic.string/string.cons/alloc.pass.cpp
@@ -15,6 +15,7 @@
 #include <cassert>
 
 #include "../test_allocator.h"
+#include "../min_allocator.h"
 
 template <class S>
 void
@@ -38,7 +39,36 @@
     }
 }
 
+#if __cplusplus >= 201103L
+
+template <class S>
+void
+test2()
+{
+    {
+    S s;
+    assert(s.__invariants());
+    assert(s.data());
+    assert(s.size() == 0);
+    assert(s.capacity() >= s.size());
+    assert(s.get_allocator() == typename S::allocator_type());
+    }
+    {
+    S s(typename S::allocator_type{});
+    assert(s.__invariants());
+    assert(s.data());
+    assert(s.size() == 0);
+    assert(s.capacity() >= s.size());
+    assert(s.get_allocator() == typename S::allocator_type());
+    }
+}
+
+#endif
+
 int main()
 {
     test<std::basic_string<char, std::char_traits<char>, test_allocator<char> > >();
+#if __cplusplus >= 201103L
+    test2<std::basic_string<char, std::char_traits<char>, min_allocator<char> > >();
+#endif
 }