1*7c82a1ecSDimitry Andric// -*- C++ -*-
2*7c82a1ecSDimitry Andric//===--------------------------- string ----------------------------------===//
3*7c82a1ecSDimitry Andric//
4*7c82a1ecSDimitry Andric//                     The LLVM Compiler Infrastructure
5*7c82a1ecSDimitry Andric//
6*7c82a1ecSDimitry Andric// This file is dual licensed under the MIT and the University of Illinois Open
7*7c82a1ecSDimitry Andric// Source Licenses. See LICENSE.TXT for details.
8*7c82a1ecSDimitry Andric//
9*7c82a1ecSDimitry Andric//===----------------------------------------------------------------------===//
10*7c82a1ecSDimitry Andric
11*7c82a1ecSDimitry Andric#ifndef _LIBCPP_EXPERIMENTAL_STRING
12*7c82a1ecSDimitry Andric#define _LIBCPP_EXPERIMENTAL_STRING
13*7c82a1ecSDimitry Andric/*
14*7c82a1ecSDimitry Andric    experimental/string synopsis
15*7c82a1ecSDimitry Andric
16*7c82a1ecSDimitry Andric// C++1z
17*7c82a1ecSDimitry Andricnamespace std {
18*7c82a1ecSDimitry Andricnamespace experimental {
19*7c82a1ecSDimitry Andricinline namespace fundamentals_v1 {
20*7c82a1ecSDimitry Andricnamespace pmr {
21*7c82a1ecSDimitry Andric
22*7c82a1ecSDimitry Andric  // basic_string using polymorphic allocator in namespace pmr
23*7c82a1ecSDimitry Andric  template <class charT, class traits = char_traits<charT>>
24*7c82a1ecSDimitry Andric   using basic_string =
25*7c82a1ecSDimitry Andric     std::basic_string<charT, traits, polymorphic_allocator<charT>>;
26*7c82a1ecSDimitry Andric
27*7c82a1ecSDimitry Andric  // basic_string typedef names using polymorphic allocator in namespace
28*7c82a1ecSDimitry Andric  // std::experimental::pmr
29*7c82a1ecSDimitry Andric  typedef basic_string<char> string;
30*7c82a1ecSDimitry Andric  typedef basic_string<char16_t> u16string;
31*7c82a1ecSDimitry Andric  typedef basic_string<char32_t> u32string;
32*7c82a1ecSDimitry Andric  typedef basic_string<wchar_t> wstring;
33*7c82a1ecSDimitry Andric
34*7c82a1ecSDimitry Andric} // namespace pmr
35*7c82a1ecSDimitry Andric} // namespace fundamentals_v1
36*7c82a1ecSDimitry Andric} // namespace experimental
37*7c82a1ecSDimitry Andric} // namespace std
38*7c82a1ecSDimitry Andric
39*7c82a1ecSDimitry Andric */
40*7c82a1ecSDimitry Andric
41*7c82a1ecSDimitry Andric#include <experimental/__config>
42*7c82a1ecSDimitry Andric#include <string>
43*7c82a1ecSDimitry Andric#include <experimental/memory_resource>
44*7c82a1ecSDimitry Andric
45*7c82a1ecSDimitry Andric#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
46*7c82a1ecSDimitry Andric#pragma GCC system_header
47*7c82a1ecSDimitry Andric#endif
48*7c82a1ecSDimitry Andric
49*7c82a1ecSDimitry Andric_LIBCPP_BEGIN_NAMESPACE_LFTS_PMR
50*7c82a1ecSDimitry Andric
51*7c82a1ecSDimitry Andrictemplate <class _CharT, class _Traits = char_traits<_CharT>>
52*7c82a1ecSDimitry Andricusing basic_string =
53*7c82a1ecSDimitry Andric    _VSTD::basic_string<_CharT, _Traits, polymorphic_allocator<_CharT>>;
54*7c82a1ecSDimitry Andric
55*7c82a1ecSDimitry Andrictypedef basic_string<char> string;
56*7c82a1ecSDimitry Andrictypedef basic_string<char16_t> u16string;
57*7c82a1ecSDimitry Andrictypedef basic_string<char32_t> u32string;
58*7c82a1ecSDimitry Andrictypedef basic_string<wchar_t> wstring;
59*7c82a1ecSDimitry Andric
60*7c82a1ecSDimitry Andric_LIBCPP_END_NAMESPACE_LFTS_PMR
61*7c82a1ecSDimitry Andric
62*7c82a1ecSDimitry Andric#endif /* _LIBCPP_EXPERIMENTAL_STRING */
63