blob: 512d11827551562d200b36e39dd78419ec06f253 [file] [log] [blame]
Howard Hinnant3e519522010-05-11 19:42:16 +00001//===----------------------------------------------------------------------===//
2//
Howard Hinnant5b08a8a2010-05-11 21:36:01 +00003// The LLVM Compiler Infrastructure
Howard Hinnant3e519522010-05-11 19:42:16 +00004//
Howard Hinnant412dbeb2010-11-16 22:09:02 +00005// This file is dual licensed under the MIT and the University of Illinois Open
6// Source Licenses. See LICENSE.TXT for details.
Howard Hinnant3e519522010-05-11 19:42:16 +00007//
8//===----------------------------------------------------------------------===//
9
10// <string>
11
12// explicit basic_string(const Allocator& a = Allocator());
13
14#include <string>
15#include <cassert>
16
Marshall Clowc3deeb52013-12-03 00:18:10 +000017#include "test_allocator.h"
Marshall Clowe34f6f62013-11-26 20:58:02 +000018#include "min_allocator.h"
Howard Hinnant3e519522010-05-11 19:42:16 +000019
20template <class S>
21void
22test()
23{
24 {
25 S s;
26 assert(s.__invariants());
27 assert(s.data());
28 assert(s.size() == 0);
29 assert(s.capacity() >= s.size());
30 assert(s.get_allocator() == typename S::allocator_type());
31 }
32 {
33 S s(typename S::allocator_type(5));
34 assert(s.__invariants());
35 assert(s.data());
36 assert(s.size() == 0);
37 assert(s.capacity() >= s.size());
38 assert(s.get_allocator() == typename S::allocator_type(5));
39 }
40}
41
Howard Hinnanteec72182013-06-28 16:59:19 +000042#if __cplusplus >= 201103L
43
44template <class S>
45void
46test2()
47{
48 {
49 S s;
50 assert(s.__invariants());
51 assert(s.data());
52 assert(s.size() == 0);
53 assert(s.capacity() >= s.size());
54 assert(s.get_allocator() == typename S::allocator_type());
55 }
56 {
57 S s(typename S::allocator_type{});
58 assert(s.__invariants());
59 assert(s.data());
60 assert(s.size() == 0);
61 assert(s.capacity() >= s.size());
62 assert(s.get_allocator() == typename S::allocator_type());
63 }
64}
65
66#endif
67
Howard Hinnant3e519522010-05-11 19:42:16 +000068int main()
69{
70 test<std::basic_string<char, std::char_traits<char>, test_allocator<char> > >();
Howard Hinnanteec72182013-06-28 16:59:19 +000071#if __cplusplus >= 201103L
72 test2<std::basic_string<char, std::char_traits<char>, min_allocator<char> > >();
73#endif
Howard Hinnant3e519522010-05-11 19:42:16 +000074}