int main(int, char**) { #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L char8_t s2[3] = {0}; assert(std::char_traits<char8_t>::assign(s2, 3, char8_t(5)) == s2); assert(s2[0] == char8_t(5)); assert(s2[1] == char8_t(5)); assert(s2[2] == char8_t(5)); assert(std::char_traits<char8_t>::assign(NULL, 0, char8_t(5)) == NULL); #endif return 0; }
int main(int, char**) { char8_t s1[] = {1, 2, 3}; assert(std::char_traits<char8_t>::find(s1, 3, char8_t(1)) == s1); assert(std::char_traits<char8_t>::find(s1, 3, char8_t(2)) == s1+1); assert(std::char_traits<char8_t>::find(s1, 3, char8_t(3)) == s1+2); assert(std::char_traits<char8_t>::find(s1, 3, char8_t(4)) == 0); assert(std::char_traits<char8_t>::find(s1, 3, char8_t(0)) == 0); assert(std::char_traits<char8_t>::find(NULL, 0, char8_t(0)) == 0); static_assert(test_constexpr(), "" ); }
void disambig() { char8_t (a) = u8'x'; }
} void operator""_a(char); void operator""_a(const char*, decltype(sizeof(0))); void test_udl1() { int &x = u8'a'_a; // expected-error {{no matching literal operator}} float &y = u8"a"_a; // expected-error {{no matching literal operator}} } int &operator""_a(char8_t); float &operator""_a(const char8_t*, decltype(sizeof(0))); void test_udl2() { int &x = u8'a'_a; float &y = u8"a"_a; } template<typename E, typename T> void check(T &&t) { using Check = E; using Check = T; } void check_deduction() { check<char8_t>(u8'a'); check<const char8_t(&)[5]>(u8"a\u1000"); } static_assert(sizeof(char8_t) == 1); static_assert(char8_t(-1) > 0); static_assert(u8"\u0080"[0] > 0);