brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · 5b4cb20 Raw
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