//===----------------------------------------------------------------------===//
//
// 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
//
//===----------------------------------------------------------------------===//

// <string_view>

// constexpr basic_string_view& operator=(const basic_string_view &) noexcept = default;

#include <string_view>
#include <cassert>

#include "test_macros.h"

template<typename T>
#if TEST_STD_VER > 11
constexpr
#endif
bool test (T sv0)
    {
    T sv1;
    sv1 = sv0;
//  We can't just say "sv0 == sv1" here because string_view::compare
//  isn't constexpr until C++17, and we want to support back to C++14
    return sv0.size() == sv1.size() && sv0.data() == sv1.data();
    }

int main(int, char**) {

    assert( test<std::string_view>    (  "1234"));
#if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
    assert( test<std::u8string_view>  (u8"1234"));
#endif
#if TEST_STD_VER >= 11
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
    assert( test<std::u16string_view> ( u"1234"));
    assert( test<std::u32string_view> ( U"1234"));
#endif
#endif
    assert( test<std::wstring_view>   ( L"1234"));

#if TEST_STD_VER > 11
    static_assert( test<std::string_view>    ({  "abc", 3}), "");
#if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
    static_assert( test<std::u8string_view>  ({u8"abc", 3}), "");
#endif
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
    static_assert( test<std::u16string_view> ({ u"abc", 3}), "");
    static_assert( test<std::u32string_view> ({ U"abc", 3}), "");
#endif
    static_assert( test<std::wstring_view>   ({ L"abc", 3}), "");
#endif

  return 0;
}
