1164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow//===----------------------------------------------------------------------===// 2164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow// 3164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow// The LLVM Compiler Infrastructure 4164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow// 5164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow// This file is dual licensed under the MIT and the University of Illinois Open 6164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow// Source Licenses. See LICENSE.TXT for details. 7164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow// 8164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow//===----------------------------------------------------------------------===// 9164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow 10164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow 11164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow// <string_view> 12164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow 13164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow// constexpr const _CharT& back(); 14164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow 15164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow#include <experimental/string_view> 16164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow#include <cassert> 17164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow 18d24c465beaec2fe9a0e365e6379cd5d3acaeb2caEric Fiselier#include "test_macros.h" 19d24c465beaec2fe9a0e365e6379cd5d3acaeb2caEric Fiselier 20164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clowtemplate <typename CharT> 21164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clowbool test ( const CharT *s, size_t len ) { 22164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow std::experimental::basic_string_view<CharT> sv ( s, len ); 23164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow assert ( sv.length() == len ); 24164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow assert ( sv.front() == s[0] ); 25164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow return &sv.front() == s; 26164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow } 2784acb1ec3f7d5e0f37d7176697c2fa876c413407Eric Fiselier 28164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clowint main () { 29164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow assert ( test ( "ABCDE", 5 )); 30164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow assert ( test ( "a", 1 )); 31164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow 32164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow assert ( test ( L"ABCDE", 5 )); 33164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow assert ( test ( L"a", 1 )); 34164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow 35d24c465beaec2fe9a0e365e6379cd5d3acaeb2caEric Fiselier#if TEST_STD_VER >= 11 36164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow assert ( test ( u"ABCDE", 5 )); 37164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow assert ( test ( u"a", 1 )); 38164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow 39164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow assert ( test ( U"ABCDE", 5 )); 40164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow assert ( test ( U"a", 1 )); 41164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow#endif 42164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow 43d24c465beaec2fe9a0e365e6379cd5d3acaeb2caEric Fiselier#if TEST_STD_VER >= 11 44164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow { 45164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow constexpr std::experimental::basic_string_view<char> sv ( "ABC", 2 ); 46164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow static_assert ( sv.length() == 2, "" ); 47164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow static_assert ( sv.front() == 'A', "" ); 48164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow } 49164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow#endif 50164b297099f486abe42122fe1aefe7eb741b7acfMarshall Clow} 51