48 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// <string>10 11// template<> struct char_traits<wchar_t>12 13// static char_type* move(char_type* s1, const char_type* s2, size_t n);14 15// UNSUPPORTED: no-wide-characters16 17#include <string>18#include <cassert>19 20#include "test_macros.h"21 22TEST_CONSTEXPR_CXX20 bool test() {23 wchar_t s1[] = {1, 2, 3};24 assert(std::char_traits<wchar_t>::move(s1, s1 + 1, 2) == s1);25 assert(s1[0] == wchar_t(2));26 assert(s1[1] == wchar_t(3));27 assert(s1[2] == wchar_t(3));28 s1[2] = wchar_t(0);29 assert(std::char_traits<wchar_t>::move(s1 + 1, s1, 2) == s1 + 1);30 assert(s1[0] == wchar_t(2));31 assert(s1[1] == wchar_t(2));32 assert(s1[2] == wchar_t(3));33 assert(std::char_traits<wchar_t>::move(NULL, s1, 0) == NULL);34 assert(std::char_traits<wchar_t>::move(s1, NULL, 0) == s1);35 36 return true;37}38 39int main(int, char**) {40 test();41 42#if TEST_STD_VER > 1743 static_assert(test());44#endif45 46 return 0;47}48