#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;
}