//===----------------------------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef _LIBCPP___FWD_STRING_H #define _LIBCPP___FWD_STRING_H #include <__config> #include <__fwd/memory_resource.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif _LIBCPP_BEGIN_NAMESPACE_STD template struct _LIBCPP_TEMPLATE_VIS char_traits; template <> struct char_traits; #ifndef _LIBCPP_HAS_NO_CHAR8_T template <> struct char_traits; #endif template <> struct char_traits; template <> struct char_traits; #ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS template <> struct char_traits; #endif template class _LIBCPP_TEMPLATE_VIS allocator; template , class _Allocator = allocator<_CharT> > class _LIBCPP_TEMPLATE_VIS basic_string; using string = basic_string; #ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS using wstring = basic_string; #endif #ifndef _LIBCPP_HAS_NO_CHAR8_T using u8string = basic_string; #endif using u16string = basic_string; using u32string = basic_string; #if _LIBCPP_STD_VER >= 17 namespace pmr { template > using basic_string = std::basic_string<_CharT, _Traits, polymorphic_allocator<_CharT>>; using string = basic_string; # ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS using wstring = basic_string; # endif # ifndef _LIBCPP_HAS_NO_CHAR8_T using u8string = basic_string; # endif using u16string = basic_string; using u32string = basic_string; } // namespace pmr #endif // _LIBCPP_STD_VER >= 17 // clang-format off template class _LIBCPP_PREFERRED_NAME(string) #ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS _LIBCPP_PREFERRED_NAME(wstring) #endif #ifndef _LIBCPP_HAS_NO_CHAR8_T _LIBCPP_PREFERRED_NAME(u8string) #endif _LIBCPP_PREFERRED_NAME(u16string) _LIBCPP_PREFERRED_NAME(u32string) #if _LIBCPP_STD_VER >= 17 _LIBCPP_PREFERRED_NAME(pmr::string) # ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS _LIBCPP_PREFERRED_NAME(pmr::wstring) # endif # ifndef _LIBCPP_HAS_NO_CHAR8_T _LIBCPP_PREFERRED_NAME(pmr::u8string) # endif _LIBCPP_PREFERRED_NAME(pmr::u16string) _LIBCPP_PREFERRED_NAME(pmr::u32string) #endif basic_string; // clang-format on _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP___FWD_STRING_H