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(const _CharT* _s) 14// : __data (_s), __size(_Traits::length(_s)) {} 15 16 17#include <experimental/string_view> 18#include <string> 19#include <cassert> 20 21#include "constexpr_char_traits.hpp" 22 23template<typename CharT> 24size_t StrLen ( const CharT *s ) { 25 size_t retVal = 0; 26 while ( *s != 0 ) { ++retVal; ++s; } 27 return retVal; 28 } 29 30template<typename CharT> 31void test ( const CharT *s ) { 32 std::experimental::basic_string_view<CharT> sv1 ( s ); 33 assert ( sv1.size() == StrLen( s )); 34 assert ( sv1.data() == s ); 35 } 36 37 38int main () { 39 40 test ( "QBCDE" ); 41 test ( "A" ); 42 test ( "" ); 43 44 test ( L"QBCDE" ); 45 test ( L"A" ); 46 test ( L"" ); 47 48#if __cplusplus >= 201103L 49 test ( u"QBCDE" ); 50 test ( u"A" ); 51 test ( u"" ); 52 53 test ( U"QBCDE" ); 54 test ( U"A" ); 55 test ( U"" ); 56#endif 57 58#if _LIBCPP_STD_VER > 11 59 { 60 constexpr std::experimental::basic_string_view<char, constexpr_char_traits<char>> sv1 ( "ABCDE" ); 61 static_assert ( sv1.size() == 5, ""); 62 } 63#endif 64} 65