//===----------------------------------------------------------------------===//
//
// 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: !stdlib=libc++ && (c++03 || c++11 || c++14)
// <string_view>
// template<class Allocator>
// basic_string_view(const basic_string<_CharT, _Traits, Allocator>& _str) noexcept
#include <string_view>
#include <string>
#include <cassert>
#include "test_macros.h"
struct dummy_char_traits : public std::char_traits<char> {};
template <typename CharT, typename Traits>
void test(const std::basic_string<CharT, Traits>& str) {
typedef std::basic_string_view<CharT, Traits> SV;
ASSERT_NOEXCEPT(SV(str));
SV sv1(str);
assert(sv1.size() == str.size());
assert(sv1.data() == str.data());
}
int main(int, char**) {
test(std::string("QBCDE"));
test(std::string(""));
test(std::string());
#ifndef TEST_HAS_NO_WIDE_CHARACTERS
test(std::wstring(L"QBCDE"));
test(std::wstring(L""));
test(std::wstring());
#endif
#ifndef TEST_HAS_NO_CHAR8_T
test(std::u8string{u8"QBCDE"});
test(std::u8string{u8""});
test(std::u8string{});
#endif
#if TEST_STD_VER >= 11
test(std::u16string{u"QBCDE"});
test(std::u16string{u""});
test(std::u16string{});
test(std::u32string{U"QBCDE"});
test(std::u32string{U""});
test(std::u32string{});
#endif
test(std::basic_string<char, dummy_char_traits>("QBCDE"));
test(std::basic_string<char, dummy_char_traits>(""));
test(std::basic_string<char, dummy_char_traits>());
return 0;
}