1522a7f95SEric Fiselier// -*- C++ -*-
2eb8650a7SLouis Dionne//===----------------------------------------------------------------------===//
3522a7f95SEric Fiselier//
457b08b09SChandler Carruth// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
557b08b09SChandler Carruth// See https://llvm.org/LICENSE.txt for license information.
657b08b09SChandler Carruth// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7522a7f95SEric Fiselier//
8522a7f95SEric Fiselier//===----------------------------------------------------------------------===//
9522a7f95SEric Fiselier
10522a7f95SEric Fiselier#ifndef _LIBCPP_EXPERIMENTAL_STRING
11522a7f95SEric Fiselier#define _LIBCPP_EXPERIMENTAL_STRING
12*385cc25aSLouis Dionne
13522a7f95SEric Fiselier/*
14522a7f95SEric Fiselier    experimental/string synopsis
15522a7f95SEric Fiselier
16522a7f95SEric Fiselier// C++1z
17522a7f95SEric Fiseliernamespace std {
18522a7f95SEric Fiseliernamespace experimental {
19522a7f95SEric Fiselierinline namespace fundamentals_v1 {
20522a7f95SEric Fiseliernamespace pmr {
21522a7f95SEric Fiselier
22522a7f95SEric Fiselier  // basic_string using polymorphic allocator in namespace pmr
23522a7f95SEric Fiselier  template <class charT, class traits = char_traits<charT>>
24522a7f95SEric Fiselier   using basic_string =
25522a7f95SEric Fiselier     std::basic_string<charT, traits, polymorphic_allocator<charT>>;
26522a7f95SEric Fiselier
27522a7f95SEric Fiselier  // basic_string typedef names using polymorphic allocator in namespace
28522a7f95SEric Fiselier  // std::experimental::pmr
29522a7f95SEric Fiselier  typedef basic_string<char> string;
30522a7f95SEric Fiselier  typedef basic_string<char16_t> u16string;
31522a7f95SEric Fiselier  typedef basic_string<char32_t> u32string;
32522a7f95SEric Fiselier  typedef basic_string<wchar_t> wstring;
33522a7f95SEric Fiselier
34522a7f95SEric Fiselier} // namespace pmr
35522a7f95SEric Fiselier} // namespace fundamentals_v1
36522a7f95SEric Fiselier} // namespace experimental
37522a7f95SEric Fiselier} // namespace std
38522a7f95SEric Fiselier
39522a7f95SEric Fiselier */
40522a7f95SEric Fiselier
41*385cc25aSLouis Dionne#include <__assert> // all public C++ headers provide the assertion handler
42522a7f95SEric Fiselier#include <experimental/__config>
43522a7f95SEric Fiselier#include <experimental/memory_resource>
444d81a46fSArthur O'Dwyer#include <string>
45522a7f95SEric Fiselier
46522a7f95SEric Fiselier#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
47522a7f95SEric Fiselier#  pragma GCC system_header
48522a7f95SEric Fiselier#endif
49522a7f95SEric Fiselier
50522a7f95SEric Fiselier_LIBCPP_BEGIN_NAMESPACE_LFTS_PMR
51522a7f95SEric Fiselier
52522a7f95SEric Fiseliertemplate <class _CharT, class _Traits = char_traits<_CharT>>
53522a7f95SEric Fiselierusing basic_string =
54522a7f95SEric Fiselier    _VSTD::basic_string<_CharT, _Traits, polymorphic_allocator<_CharT>>;
55522a7f95SEric Fiselier
56522a7f95SEric Fiseliertypedef basic_string<char> string;
57522a7f95SEric Fiseliertypedef basic_string<char16_t> u16string;
58522a7f95SEric Fiseliertypedef basic_string<char32_t> u32string;
59f4c1258dSLouis Dionne#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
60522a7f95SEric Fiseliertypedef basic_string<wchar_t> wstring;
61f4c1258dSLouis Dionne#endif
62522a7f95SEric Fiselier
63522a7f95SEric Fiselier_LIBCPP_END_NAMESPACE_LFTS_PMR
64522a7f95SEric Fiselier
65522a7f95SEric Fiselier#endif /* _LIBCPP_EXPERIMENTAL_STRING */
66