示例#1
0
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;
}
示例#2
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(), "" );
}
示例#3
0
void disambig() {
  char8_t (a) = u8'x';
}
示例#4
0
}

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);