//===----------------------------------------------------------------------===// // // 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++03, c++11, c++14, c++17, c++20 // // template // basic_string_view(Range&&) -> basic_string_view>; // C++23 #include #include #include "make_string.h" #include "test_iterators.h" #include "test_macros.h" template void test() { auto val = MAKE_STRING(CharT, "test"); auto sv = std::basic_string_view(val); ASSERT_SAME_TYPE(decltype(sv), std::basic_string_view); assert(sv.size() == val.size()); assert(sv.data() == val.data()); } void test() { test(); #ifndef TEST_HAS_NO_WIDE_CHARACTERS test(); #endif test(); test(); test(); test(); struct Widget { const char16_t* data_ = u"foo"; contiguous_iterator begin() const { return contiguous_iterator(data_); } contiguous_iterator end() const { return contiguous_iterator(data_ + 3); } }; std::basic_string_view bsv = std::basic_string_view(Widget()); ASSERT_SAME_TYPE(decltype(bsv), std::basic_string_view); } int main(int, char**) { test(); return 0; }