67 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// UNSUPPORTED: !stdlib=libc++ && (c++03 || c++11 || c++14)10 11// <string_view>12 13// template<class Allocator>14// basic_string_view(const basic_string<_CharT, _Traits, Allocator>& _str) noexcept15 16#include <string_view>17#include <string>18#include <cassert>19 20#include "test_macros.h"21 22struct dummy_char_traits : public std::char_traits<char> {};23 24template <typename CharT, typename Traits>25void test(const std::basic_string<CharT, Traits>& str) {26 typedef std::basic_string_view<CharT, Traits> SV;27 ASSERT_NOEXCEPT(SV(str));28 29 SV sv1(str);30 assert(sv1.size() == str.size());31 assert(sv1.data() == str.data());32}33 34int main(int, char**) {35 test(std::string("QBCDE"));36 test(std::string(""));37 test(std::string());38 39#ifndef TEST_HAS_NO_WIDE_CHARACTERS40 test(std::wstring(L"QBCDE"));41 test(std::wstring(L""));42 test(std::wstring());43#endif44 45#ifndef TEST_HAS_NO_CHAR8_T46 test(std::u8string{u8"QBCDE"});47 test(std::u8string{u8""});48 test(std::u8string{});49#endif50 51#if TEST_STD_VER >= 1152 test(std::u16string{u"QBCDE"});53 test(std::u16string{u""});54 test(std::u16string{});55 56 test(std::u32string{U"QBCDE"});57 test(std::u32string{U""});58 test(std::u32string{});59#endif60 61 test(std::basic_string<char, dummy_char_traits>("QBCDE"));62 test(std::basic_string<char, dummy_char_traits>(""));63 test(std::basic_string<char, dummy_char_traits>());64 65 return 0;66}67