123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- // -*- C++ -*-
- //===----------------------------------------------------------------------===//
- //
- // 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
- //
- //===----------------------------------------------------------------------===//
- // UNSUPPORTED: c++98, c++03
- // <experimental/string>
- // namespace std { namespace experimental { namespace pmr {
- // template <class Char, class Traits = ...>
- // using basic_string =
- // ::std::basic_string<Char, Traits, polymorphic_allocator<Char>>
- //
- // typedef ... string
- // typedef ... u16string
- // typedef ... u32string
- // typedef ... wstring
- //
- // }}} // namespace std::experimental::pmr
- #include <experimental/string>
- #include <experimental/memory_resource>
- #include <type_traits>
- #include <cassert>
- #include "constexpr_char_traits.h"
- #include "test_macros.h"
- namespace pmr = std::experimental::pmr;
- template <class Char, class PmrTypedef>
- void test_string_typedef() {
- using StdStr = std::basic_string<Char, std::char_traits<Char>,
- pmr::polymorphic_allocator<Char>>;
- using PmrStr = pmr::basic_string<Char>;
- static_assert(std::is_same<StdStr, PmrStr>::value, "");
- static_assert(std::is_same<PmrStr, PmrTypedef>::value, "");
- }
- template <class Char, class Traits>
- void test_basic_string_alias() {
- using StdStr = std::basic_string<Char, Traits,
- pmr::polymorphic_allocator<Char>>;
- using PmrStr = pmr::basic_string<Char, Traits>;
- static_assert(std::is_same<StdStr, PmrStr>::value, "");
- }
- int main(int, char**)
- {
- {
- test_string_typedef<char, pmr::string>();
- test_string_typedef<wchar_t, pmr::wstring>();
- test_string_typedef<char16_t, pmr::u16string>();
- test_string_typedef<char32_t, pmr::u32string>();
- }
- {
- test_basic_string_alias<char, constexpr_char_traits<char>>();
- test_basic_string_alias<wchar_t, constexpr_char_traits<wchar_t>>();
- test_basic_string_alias<char16_t, constexpr_char_traits<char16_t>>();
- test_basic_string_alias<char32_t, constexpr_char_traits<char32_t>>();
- }
- {
- // Check that std::basic_string has been included and is complete.
- pmr::string s;
- assert(s.get_allocator().resource() == pmr::get_default_resource());
- }
- return 0;
- }
|