blob: 4edbf98b5f73b191efb3df7f45a7c960070400fc [file] [log] [blame]
Eric Fiseliere047a722016-05-07 03:09:55 +00001// -*- C++ -*-
Louis Dionne9bd93882021-11-17 16:25:01 -05002//===----------------------------------------------------------------------===//
Eric Fiseliere047a722016-05-07 03:09:55 +00003//
Chandler Carruthd2012102019-01-19 10:56:40 +00004// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5// See https://llvm.org/LICENSE.txt for license information.
6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
Eric Fiseliere047a722016-05-07 03:09:55 +00007//
8//===----------------------------------------------------------------------===//
9
10#ifndef _LIBCPP_EXPERIMENTAL_STRING
11#define _LIBCPP_EXPERIMENTAL_STRING
Louis Dionneb4fce352022-03-25 12:55:36 -040012
Eric Fiseliere047a722016-05-07 03:09:55 +000013/*
14 experimental/string synopsis
15
16// C++1z
17namespace std {
18namespace experimental {
19inline namespace fundamentals_v1 {
20namespace pmr {
21
22 // basic_string using polymorphic allocator in namespace pmr
23 template <class charT, class traits = char_traits<charT>>
24 using basic_string =
25 std::basic_string<charT, traits, polymorphic_allocator<charT>>;
26
27 // basic_string typedef names using polymorphic allocator in namespace
28 // std::experimental::pmr
29 typedef basic_string<char> string;
30 typedef basic_string<char16_t> u16string;
31 typedef basic_string<char32_t> u32string;
32 typedef basic_string<wchar_t> wstring;
33
34} // namespace pmr
35} // namespace fundamentals_v1
36} // namespace experimental
37} // namespace std
38
39 */
40
Louis Dionneb4fce352022-03-25 12:55:36 -040041#include <__assert> // all public C++ headers provide the assertion handler
Eric Fiseliere047a722016-05-07 03:09:55 +000042#include <experimental/__config>
Eric Fiseliere047a722016-05-07 03:09:55 +000043#include <experimental/memory_resource>
Arthur O'Dwyer65077c02022-01-07 09:45:05 -050044#include <string>
Eric Fiseliere047a722016-05-07 03:09:55 +000045
46#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
Arthur O'Dwyer6eeaa002022-02-01 20:16:40 -050047# pragma GCC system_header
Eric Fiseliere047a722016-05-07 03:09:55 +000048#endif
49
50_LIBCPP_BEGIN_NAMESPACE_LFTS_PMR
51
Mark de Weverc682d322022-08-24 20:22:22 +020052#ifndef _LIBCPP_CXX03_LANG
53
Nikolas Klauserf8571ea2022-10-19 11:06:12 +020054_LIBCPP_SUPPRESS_DEPRECATED_PUSH
55
Eric Fiseliere047a722016-05-07 03:09:55 +000056template <class _CharT, class _Traits = char_traits<_CharT>>
57using basic_string =
58 _VSTD::basic_string<_CharT, _Traits, polymorphic_allocator<_CharT>>;
59
Nikolas Klauserf8571ea2022-10-19 11:06:12 +020060_LIBCPP_DEPCREATED_MEMORY_RESOURCE("string") typedef basic_string<char> string;
61_LIBCPP_DEPCREATED_MEMORY_RESOURCE("u16string") typedef basic_string<char16_t> u16string;
62_LIBCPP_DEPCREATED_MEMORY_RESOURCE("u32string") typedef basic_string<char32_t> u32string;
Louis Dionne89258142021-08-23 15:32:36 -040063#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
Nikolas Klauserf8571ea2022-10-19 11:06:12 +020064_LIBCPP_DEPCREATED_MEMORY_RESOURCE("wstring") typedef basic_string<wchar_t> wstring;
Louis Dionne89258142021-08-23 15:32:36 -040065#endif
Eric Fiseliere047a722016-05-07 03:09:55 +000066
Nikolas Klauserf8571ea2022-10-19 11:06:12 +020067_LIBCPP_SUPPRESS_DEPRECATED_POP
68
Mark de Weverc682d322022-08-24 20:22:22 +020069#endif // _LIBCPP_CXX03_LANG
70
Eric Fiseliere047a722016-05-07 03:09:55 +000071_LIBCPP_END_NAMESPACE_LFTS_PMR
72
73#endif /* _LIBCPP_EXPERIMENTAL_STRING */