diff options
author | Howard Hinnant <hhinnant@apple.com> | 2013-06-28 16:59:19 +0000 |
---|---|---|
committer | Howard Hinnant <hhinnant@apple.com> | 2013-06-28 16:59:19 +0000 |
commit | eec721826cc35a0c08dc5bc54db9a51dbd4fa361 (patch) | |
tree | be3ea93c71256a122174477e4e8b0024bca43ee7 /libcxx/test/strings/basic.string/string.cons/pointer_alloc.pass.cpp | |
parent | e852add40ed7d93da626d4e2286c840afb9d98d8 (diff) | |
download | bcm5719-llvm-eec721826cc35a0c08dc5bc54db9a51dbd4fa361.tar.gz bcm5719-llvm-eec721826cc35a0c08dc5bc54db9a51dbd4fa361.zip |
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
Diffstat (limited to 'libcxx/test/strings/basic.string/string.cons/pointer_alloc.pass.cpp')
-rw-r--r-- | libcxx/test/strings/basic.string/string.cons/pointer_alloc.pass.cpp | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/libcxx/test/strings/basic.string/string.cons/pointer_alloc.pass.cpp b/libcxx/test/strings/basic.string/string.cons/pointer_alloc.pass.cpp index db2f733331e..befb143d973 100644 --- a/libcxx/test/strings/basic.string/string.cons/pointer_alloc.pass.cpp +++ b/libcxx/test/strings/basic.string/string.cons/pointer_alloc.pass.cpp @@ -17,6 +17,7 @@ #include <cassert> #include "../test_allocator.h" +#include "../min_allocator.h" template <class charT> void @@ -34,13 +35,12 @@ test(const charT* s) assert(s2.capacity() >= s2.size()); } -template <class charT> +template <class charT, class A> void -test(const charT* s, const test_allocator<charT>& a) +test(const charT* s, const A& a) { - typedef std::basic_string<charT, std::char_traits<charT>, test_allocator<charT> > S; + typedef std::basic_string<charT, std::char_traits<charT>, A> S; typedef typename S::traits_type T; - typedef typename S::allocator_type A; unsigned n = T::length(s); S s2(s, a); assert(s2.__invariants()); @@ -52,6 +52,7 @@ test(const charT* s, const test_allocator<charT>& a) int main() { + { typedef test_allocator<char> A; typedef std::basic_string<char, std::char_traits<char>, A> S; @@ -66,4 +67,23 @@ int main() test("123456798012345679801234567980123456798012345679801234567980"); test("123456798012345679801234567980123456798012345679801234567980", A(2)); + } +#if __cplusplus >= 201103L + { + typedef min_allocator<char> A; + typedef std::basic_string<char, std::char_traits<char>, A> S; + + test(""); + test("", A()); + + test("1"); + test("1", A()); + + test("1234567980"); + test("1234567980", A()); + + test("123456798012345679801234567980123456798012345679801234567980"); + test("123456798012345679801234567980123456798012345679801234567980", A()); + } +#endif } |