11e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow//===----------------------------------------------------------------------===// 21e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow// 31e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow// The LLVM Compiler Infrastructure 41e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow// 51e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow// This file is dual licensed under the MIT and the University of Illinois Open 61e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow// Source Licenses. See LICENSE.TXT for details. 71e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow// 81e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow//===----------------------------------------------------------------------===// 91e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 101e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 111e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow// <string_view> 121e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 131e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow// constexpr const _CharT& back(); 141e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 151e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow#include <string_view> 161e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow#include <cassert> 171e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 181e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow#include "test_macros.h" 191e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 201e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clowtemplate <typename CharT> 211e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clowbool test ( const CharT *s, size_t len ) { 221e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow std::basic_string_view<CharT> sv ( s, len ); 231e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow assert ( sv.length() == len ); 241e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow assert ( sv.front() == s[0] ); 251e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow return &sv.front() == s; 261e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow } 271e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 281e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clowint main () { 291e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow assert ( test ( "ABCDE", 5 )); 301e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow assert ( test ( "a", 1 )); 311e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 321e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow assert ( test ( L"ABCDE", 5 )); 331e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow assert ( test ( L"a", 1 )); 341e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 351e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow#if TEST_STD_VER >= 11 361e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow assert ( test ( u"ABCDE", 5 )); 371e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow assert ( test ( u"a", 1 )); 381e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 391e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow assert ( test ( U"ABCDE", 5 )); 401e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow assert ( test ( U"a", 1 )); 411e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow#endif 421e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 431e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow#if TEST_STD_VER >= 11 441e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow { 451e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow constexpr std::basic_string_view<char> sv ( "ABC", 2 ); 461e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow static_assert ( sv.length() == 2, "" ); 471e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow static_assert ( sv.front() == 'A', "" ); 481e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow } 491e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow#endif 501e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow} 51