192487d7cSLouis Dionne //===----------------------------------------------------------------------===//
292487d7cSLouis Dionne //
392487d7cSLouis Dionne // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
492487d7cSLouis Dionne // See https://llvm.org/LICENSE.txt for license information.
592487d7cSLouis Dionne // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
692487d7cSLouis Dionne //
792487d7cSLouis Dionne //===----------------------------------------------------------------------===//
892487d7cSLouis Dionne 
992487d7cSLouis Dionne // <string>
1092487d7cSLouis Dionne 
1192487d7cSLouis Dionne // template<> struct char_traits<wchar_t>
1292487d7cSLouis Dionne 
1392487d7cSLouis Dionne // static void assign(char_type& c1, const char_type& c2);
1492487d7cSLouis Dionne // constexpr in C++17
1592487d7cSLouis Dionne 
1692487d7cSLouis Dionne // UNSUPPORTED: no-wide-characters
1792487d7cSLouis Dionne 
1892487d7cSLouis Dionne #include <string>
1992487d7cSLouis Dionne #include <cassert>
2092487d7cSLouis Dionne 
2192487d7cSLouis Dionne #include "test_macros.h"
2292487d7cSLouis Dionne 
2392487d7cSLouis Dionne #if TEST_STD_VER > 14
test_constexpr()24*a40bada9SBrendan Emery constexpr bool test_constexpr() {
2592487d7cSLouis Dionne   wchar_t c = L'1';
2692487d7cSLouis Dionne   std::char_traits<wchar_t>::assign(c, L'a');
2792487d7cSLouis Dionne   return c == L'a';
2892487d7cSLouis Dionne }
2992487d7cSLouis Dionne #endif
3092487d7cSLouis Dionne 
main(int,char **)31*a40bada9SBrendan Emery int main(int, char**) {
3292487d7cSLouis Dionne   wchar_t c = L'\0';
3392487d7cSLouis Dionne   std::char_traits<wchar_t>::assign(c, L'a');
3492487d7cSLouis Dionne   assert(c == L'a');
3592487d7cSLouis Dionne 
3692487d7cSLouis Dionne #if TEST_STD_VER > 14
3792487d7cSLouis Dionne   static_assert(test_constexpr(), "");
3892487d7cSLouis Dionne #endif
3992487d7cSLouis Dionne 
4092487d7cSLouis Dionne   return 0;
4192487d7cSLouis Dionne }
42