Home | History | Annotate | Download | only in string.view.cons
      1 //===----------------------------------------------------------------------===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is dual licensed under the MIT and the University of Illinois Open
      6 // Source Licenses. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 
     10 
     11 // <string_view>
     12 
     13 // constexpr basic_string_view& operator=(const basic_string_view &) noexcept = default;
     14 
     15 #include <string_view>
     16 #include <cassert>
     17 
     18 #include "test_macros.h"
     19 
     20 template<typename T>
     21 #if TEST_STD_VER > 11
     22 constexpr
     23 #endif
     24 bool test (T sv0)
     25     {
     26     T sv1;
     27     sv1 = sv0;
     28 //  We can't just say "sv0 == sv1" here because string_view::compare
     29 //  isn't constexpr until C++17, and we want to support back to C++14
     30     return sv0.size() == sv1.size() && sv0.data() == sv1.data();
     31     }
     32 
     33 int main () {
     34 
     35     assert( test<std::string_view>    ( "1234"));
     36 #ifdef _LIBCPP_HAS_NO_UNICODE_CHARS
     37     assert( test<std::u16string_view> (u"1234"));
     38     assert( test<std::u32string_view> (U"1234"));
     39 #endif
     40     assert( test<std::wstring_view>   (L"1234"));
     41 
     42 #if TEST_STD_VER > 11
     43     static_assert( test<std::string_view>    ({ "abc", 3}), "");
     44 #ifdef _LIBCPP_HAS_NO_UNICODE_CHARS
     45     static_assert( test<std::u16string_view> ({u"abc", 3}), "");
     46     static_assert( test<std::u32string_view> ({U"abc", 3}), "");
     47 #endif
     48     static_assert( test<std::wstring_view>   ({L"abc", 3}), "");
     49 #endif
     50 }
     51