diff --git a/CMakeLists.txt b/CMakeLists.txt
index e117a26..9bc955b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -120,6 +120,12 @@
   "Whether to include support for Unicode in the library. Disabling Unicode can
    be useful when porting to platforms that don't support UTF-8 encoding (e.g.
    embedded)." ON)
+option(LIBCXX_ENABLE_WIDE_CHARACTERS
+  "Whether to include support for wide characters in the library. Disabling
+   wide character support can be useful when porting to platforms that don't
+   support the C functionality for wide characters. When wide characters are
+   not supported, several parts of the library will be disabled, notably the
+   wide character specializations of std::basic_string." ON)
 option(LIBCXX_ENABLE_VENDOR_AVAILABILITY_ANNOTATIONS
   "Whether to turn on vendor availability annotations on declarations that depend
    on definitions in a shared library. By default, we assume that we're not building
@@ -893,6 +899,7 @@
 config_define_if_not(LIBCXX_ENABLE_RANDOM_DEVICE _LIBCPP_HAS_NO_RANDOM_DEVICE)
 config_define_if_not(LIBCXX_ENABLE_LOCALIZATION _LIBCPP_HAS_NO_LOCALIZATION)
 config_define_if_not(LIBCXX_ENABLE_UNICODE _LIBCPP_HAS_NO_UNICODE)
+config_define_if_not(LIBCXX_ENABLE_WIDE_CHARACTERS _LIBCPP_HAS_NO_WIDE_CHARACTERS)
 config_define_if_not(LIBCXX_ENABLE_VENDOR_AVAILABILITY_ANNOTATIONS _LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS)
 # Incomplete features get their own specific disabling flags. This makes it
 # easier to grep for target specific flags once the feature is complete.
diff --git a/cmake/caches/Generic-no-wide-characters.cmake b/cmake/caches/Generic-no-wide-characters.cmake
new file mode 100644
index 0000000..728d410
--- /dev/null
+++ b/cmake/caches/Generic-no-wide-characters.cmake
@@ -0,0 +1 @@
+set(LIBCXX_ENABLE_WIDE_CHARACTERS OFF CACHE BOOL "")
diff --git a/docs/BuildingLibcxx.rst b/docs/BuildingLibcxx.rst
index a29a05b..a0128b8 100644
--- a/docs/BuildingLibcxx.rst
+++ b/docs/BuildingLibcxx.rst
@@ -251,6 +251,15 @@
    This option can be used to enable or disable the filesystem components on
    platforms that may not support them. For example on Windows when using MSVC.
 
+.. option:: LIBCXX_ENABLE_WIDE_CHARACTERS:BOOL
+
+   **Default**: ``ON``
+
+   This option can be used to disable support for ``wchar_t`` in the library. It also
+   allows the library to work on top of a C Standard Library that does not provide
+   support for ``wchar_t``. This is especially useful in embedded settings where
+   C Standard Libraries don't always provide all the usual bells and whistles.
+
 .. option:: LIBCXX_ENABLE_INCOMPLETE_FEATURES:BOOL
 
   **Default**: ``ON``
diff --git a/docs/ReleaseNotes.rst b/docs/ReleaseNotes.rst
index 1ec7fa3..1ffd5b4 100644
--- a/docs/ReleaseNotes.rst
+++ b/docs/ReleaseNotes.rst
@@ -49,7 +49,9 @@
 API Changes
 -----------
 
-- ...
+- Support for building libc++ on top of a C Standard Library that does not support ``wchar_t`` was
+  added. This is useful for building libc++ in an embedded setting, and it adds itself to the various
+  freestanding-friendly options provided by libc++.
 
 Build System Changes
 --------------------
diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt
index 55834ab..ed1a585 100644
--- a/include/CMakeLists.txt
+++ b/include/CMakeLists.txt
@@ -211,6 +211,7 @@
   __iterator/wrap_iter.h
   __libcpp_version
   __locale
+  __mbstate_t.h
   __memory/addressof.h
   __memory/allocation_guard.h
   __memory/allocator_arg_t.h
diff --git a/include/__algorithm/sort.h b/include/__algorithm/sort.h
index f038d5f..0ab6c44 100644
--- a/include/__algorithm/sort.h
+++ b/include/__algorithm/sort.h
@@ -463,7 +463,9 @@
 }
 
 _LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less<char>&, char*>(char*, char*, __less<char>&))
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 _LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less<wchar_t>&, wchar_t*>(wchar_t*, wchar_t*, __less<wchar_t>&))
+#endif
 _LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less<signed char>&, signed char*>(signed char*, signed char*, __less<signed char>&))
 _LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less<unsigned char>&, unsigned char*>(unsigned char*, unsigned char*, __less<unsigned char>&))
 _LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less<short>&, short*>(short*, short*, __less<short>&))
@@ -479,7 +481,9 @@
 _LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less<long double>&, long double*>(long double*, long double*, __less<long double>&))
 
 _LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less<char>&, char*>(char*, char*, __less<char>&))
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 _LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less<wchar_t>&, wchar_t*>(wchar_t*, wchar_t*, __less<wchar_t>&))
+#endif
 _LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less<signed char>&, signed char*>(signed char*, signed char*, __less<signed char>&))
 _LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less<unsigned char>&, unsigned char*>(unsigned char*, unsigned char*, __less<unsigned char>&))
 _LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less<short>&, short*>(short*, short*, __less<short>&))
diff --git a/include/__bsd_locale_fallbacks.h b/include/__bsd_locale_fallbacks.h
index ed0eabf..aa64b54 100644
--- a/include/__bsd_locale_fallbacks.h
+++ b/include/__bsd_locale_fallbacks.h
@@ -30,6 +30,7 @@
     return MB_CUR_MAX;
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 inline _LIBCPP_INLINE_VISIBILITY
 wint_t __libcpp_btowc_l(int __c, locale_t __l)
 {
@@ -88,6 +89,7 @@
     __libcpp_locale_guard __current(__l);
     return mbrlen(__s, __n, __ps);
 }
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 inline _LIBCPP_INLINE_VISIBILITY
 lconv *__libcpp_localeconv_l(locale_t __l)
@@ -96,6 +98,7 @@
     return localeconv();
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 inline _LIBCPP_INLINE_VISIBILITY
 size_t __libcpp_mbsrtowcs_l(wchar_t *__dest, const char **__src, size_t __len,
                      mbstate_t *__ps, locale_t __l)
@@ -103,6 +106,7 @@
     __libcpp_locale_guard __current(__l);
     return mbsrtowcs(__dest, __src, __len, __ps);
 }
+#endif
 
 inline
 int __libcpp_snprintf_l(char *__s, size_t __n, locale_t __l, const char *__format, ...) {
diff --git a/include/__config b/include/__config
index 31f98fa..0c68390 100644
--- a/include/__config
+++ b/include/__config
@@ -1241,6 +1241,16 @@
 #define _LIBCPP_PREFERRED_NAME(x)
 #endif
 
+// We often repeat things just for handling wide characters in the library.
+// When wide characters are disabled, it can be useful to have a quick way of
+// disabling it without having to resort to #if-#endif, which has a larger
+// impact on readability.
+#if defined(_LIBCPP_HAS_NO_WIDE_CHARACTERS)
+# define _LIBCPP_IF_WIDE_CHARACTERS(...)
+#else
+# define _LIBCPP_IF_WIDE_CHARACTERS(...) __VA_ARGS__
+#endif
+
 #if defined(_LIBCPP_ABI_MICROSOFT) && \
     (defined(_LIBCPP_COMPILER_MSVC) || __has_declspec_attribute(empty_bases))
 #  define _LIBCPP_DECLSPEC_EMPTY_BASES __declspec(empty_bases)
diff --git a/include/__config_site.in b/include/__config_site.in
index c938daa..a8b17ad 100644
--- a/include/__config_site.in
+++ b/include/__config_site.in
@@ -30,6 +30,7 @@
 #cmakedefine _LIBCPP_HAS_PARALLEL_ALGORITHMS
 #cmakedefine _LIBCPP_HAS_NO_RANDOM_DEVICE
 #cmakedefine _LIBCPP_HAS_NO_LOCALIZATION
+#cmakedefine _LIBCPP_HAS_NO_WIDE_CHARACTERS
 #cmakedefine _LIBCPP_HAS_NO_INCOMPLETE_FORMAT
 #cmakedefine _LIBCPP_HAS_NO_INCOMPLETE_RANGES
 
diff --git a/include/__format/format_context.h b/include/__format/format_context.h
index e277aa0..1cb7ee6 100644
--- a/include/__format/format_context.h
+++ b/include/__format/format_context.h
@@ -146,8 +146,9 @@
 // (such as a span<charT>) and polymorphic reallocation. - end note]
 
 using format_context = basic_format_context<back_insert_iterator<string>, char>;
-using wformat_context =
-    basic_format_context<back_insert_iterator<wstring>, wchar_t>;
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+using wformat_context = basic_format_context<back_insert_iterator<wstring>, wchar_t>;
+#endif
 
 #endif // !defined(_LIBCPP_HAS_NO_CONCEPTS)
 
diff --git a/include/__format/format_parse_context.h b/include/__format/format_parse_context.h
index 35ecc1f..289cab9 100644
--- a/include/__format/format_parse_context.h
+++ b/include/__format/format_parse_context.h
@@ -96,7 +96,9 @@
 };
 
 using format_parse_context = basic_format_parse_context<char>;
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 using wformat_parse_context = basic_format_parse_context<wchar_t>;
+#endif
 
 #endif // !defined(_LIBCPP_HAS_NO_CONCEPTS)
 
diff --git a/include/__format/formatter_bool.h b/include/__format/formatter_bool.h
index 8d9a1d2..fdd1d75 100644
--- a/include/__format/formatter_bool.h
+++ b/include/__format/formatter_bool.h
@@ -85,11 +85,13 @@
   static constexpr string_view __false{"false"};
 };
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <>
 struct _LIBCPP_TEMPLATE_VIS __bool_strings<wchar_t> {
   static constexpr wstring_view __true{L"true"};
   static constexpr wstring_view __false{L"false"};
 };
+#endif
 
 template <class _CharT>
 using __formatter_bool = __formatter_integral<__parser_bool<_CharT>>;
diff --git a/include/__format/formatter_char.h b/include/__format/formatter_char.h
index bbc54c4..2131de0 100644
--- a/include/__format/formatter_char.h
+++ b/include/__format/formatter_char.h
@@ -78,6 +78,7 @@
 struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter<char, char>
     : public __format_spec::__formatter_char<char> {};
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <>
 struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT formatter<char, wchar_t>
     : public __format_spec::__formatter_char<wchar_t> {
@@ -93,7 +94,7 @@
 struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FORMAT
     formatter<wchar_t, wchar_t>
     : public __format_spec::__formatter_char<wchar_t> {};
-
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 #endif // !defined(_LIBCPP_HAS_NO_CONCEPTS)
 
 #endif //_LIBCPP_STD_VER > 17
diff --git a/include/__functional/hash.h b/include/__functional/hash.h
index f8bcda0..b1a3ad9 100644
--- a/include/__functional/hash.h
+++ b/include/__functional/hash.h
@@ -561,6 +561,7 @@
 
 #endif // _LIBCPP_HAS_NO_UNICODE_CHARS
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
 template <>
 struct _LIBCPP_TEMPLATE_VIS hash<wchar_t>
@@ -576,6 +577,7 @@
     _LIBCPP_INLINE_VISIBILITY
     size_t operator()(wchar_t __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
 };
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
 template <>
diff --git a/include/__locale b/include/__locale
index 5f4d66f..4296adb 100644
--- a/include/__locale
+++ b/include/__locale
@@ -338,7 +338,9 @@
 }
 
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS collate<char>)
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS collate<wchar_t>)
+#endif
 
 // template <class CharT> class collate_byname;
 
@@ -363,6 +365,7 @@
     virtual string_type do_transform(const char_type* __lo, const char_type* __hi) const;
 };
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <>
 class _LIBCPP_TYPE_VIS collate_byname<wchar_t>
     : public collate<wchar_t>
@@ -382,6 +385,7 @@
                            const char_type* __lo2, const char_type* __hi2) const;
     virtual string_type do_transform(const char_type* __lo, const char_type* __hi) const;
 };
+#endif
 
 template <class _CharT, class _Traits, class _Allocator>
 bool
@@ -516,6 +520,7 @@
 
 template <class _CharT> class _LIBCPP_TEMPLATE_VIS ctype;
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <>
 class _LIBCPP_TYPE_VIS ctype<wchar_t>
     : public locale::facet,
@@ -617,6 +622,7 @@
     virtual char do_narrow(char_type, char __dfault) const;
     virtual const char_type* do_narrow(const char_type* __low, const char_type* __high, char __dfault, char* __dest) const;
 };
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 template <>
 class _LIBCPP_TYPE_VIS ctype<char>
@@ -761,6 +767,7 @@
     virtual const char_type* do_tolower(char_type* __low, const char_type* __high) const;
 };
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <>
 class _LIBCPP_TYPE_VIS ctype_byname<wchar_t>
     : public ctype<wchar_t>
@@ -786,6 +793,7 @@
     virtual char do_narrow(char_type, char __dfault) const;
     virtual const char_type* do_narrow(const char_type* __low, const char_type* __high, char __dfault, char* __dest) const;
 };
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 template <class _CharT>
 inline _LIBCPP_INLINE_VISIBILITY
@@ -992,6 +1000,7 @@
 
 // template <> class codecvt<wchar_t, char, mbstate_t>
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <>
 class _LIBCPP_TYPE_VIS codecvt<wchar_t, char, mbstate_t>
     : public locale::facet,
@@ -1072,6 +1081,7 @@
     virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const;
     virtual int do_max_length() const  _NOEXCEPT;
 };
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 // template <> class codecvt<char16_t, char, mbstate_t> // deprecated in C++20
 
@@ -1450,7 +1460,9 @@
 _LIBCPP_SUPPRESS_DEPRECATED_POP
 
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS codecvt_byname<char, char, mbstate_t>)
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS codecvt_byname<wchar_t, char, mbstate_t>)
+#endif
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS codecvt_byname<char16_t, char, mbstate_t>) // deprecated in C++20
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS codecvt_byname<char32_t, char, mbstate_t>) // deprecated in C++20
 #ifndef _LIBCPP_HAS_NO_CHAR8_T
@@ -1681,6 +1693,7 @@
     string __grouping_;
 };
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <>
 class _LIBCPP_TYPE_VIS numpunct<wchar_t>
     : public locale::facet
@@ -1711,6 +1724,7 @@
     char_type __thousands_sep_;
     string __grouping_;
 };
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 // template <class charT> class numpunct_byname
 
@@ -1734,6 +1748,7 @@
     void __init(const char*);
 };
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <>
 class _LIBCPP_TYPE_VIS numpunct_byname<wchar_t>
 : public numpunct<wchar_t>
@@ -1751,6 +1766,7 @@
 private:
     void __init(const char*);
 };
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 _LIBCPP_END_NAMESPACE_STD
 
diff --git a/include/__mbstate_t.h b/include/__mbstate_t.h
new file mode 100644
index 0000000..3489f9c
--- /dev/null
+++ b/include/__mbstate_t.h
@@ -0,0 +1,44 @@
+// -*- C++ -*-
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef _LIBCPP___MBSTATE_T_H
+#define _LIBCPP___MBSTATE_T_H
+
+#include <__config>
+
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
+#pragma GCC system_header
+#endif
+
+// TODO(ldionne):
+// The goal of this header is to provide mbstate_t without having to pull in
+// <wchar.h> or <uchar.h>. This is necessary because we need that type even
+// when we don't have (or try to provide) support for wchar_t, because several
+// types like std::fpos are defined in terms of mbstate_t.
+//
+// This is a gruesome hack, but I don't know how to make it cleaner for
+// the time being.
+
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+#   include <wchar.h> // for mbstate_t
+#elif __has_include(<bits/types/mbstate_t.h>)
+#   include <bits/types/mbstate_t.h> // works on most Unixes
+#elif __has_include(<sys/_types/_mbstate_t.h>)
+#   include <sys/_types/_mbstate_t.h> // works on Darwin
+#else
+#   error "The library was configured without support for wide-characters, but we don't know how to get the definition of mbstate_t without <wchar.h> on your platform."
+#endif
+
+_LIBCPP_BEGIN_NAMESPACE_STD
+
+using ::mbstate_t _LIBCPP_USING_IF_EXISTS;
+
+_LIBCPP_END_NAMESPACE_STD
+
+#endif // _LIBCPP___MBSTATE_T_H
diff --git a/include/__string b/include/__string
index a968fc0..1691b44 100644
--- a/include/__string
+++ b/include/__string
@@ -23,8 +23,12 @@
 #include <cstdio>      // for EOF
 #include <cstdint>     // for uint_least16_t
 #include <cstring>     // for memcpy
-#include <cwchar>      // for wmemcpy
 #include <type_traits> // for __libcpp_is_constant_evaluated
+#include <iosfwd>      // for streampos & friends
+
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+#   include <cwchar> // for wmemcpy
+#endif
 
 #include <__debug>
 
@@ -423,6 +427,7 @@
 
 // char_traits<wchar_t>
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <>
 struct _LIBCPP_TEMPLATE_VIS char_traits<wchar_t>
 {
@@ -539,6 +544,7 @@
     return nullptr;
 #endif
 }
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 template <class _Traits>
 _LIBCPP_INLINE_VISIBILITY
diff --git a/include/__utility/cmp.h b/include/__utility/cmp.h
index a14e373..4fc96b0 100644
--- a/include/__utility/cmp.h
+++ b/include/__utility/cmp.h
@@ -30,14 +30,17 @@
 
 template<class _Tp>
 concept __is_safe_integral_cmp = is_integral_v<_Tp> &&
-                      !_IsSameAsAny<_Tp, bool, char,
+                      !_IsSameAsAny<_Tp, bool, char
 #ifndef _LIBCPP_HAS_NO_CHAR8_T
-                                    char8_t,
+                                    , char8_t
 #endif
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
-                                    char16_t, char32_t,
+                                    , char16_t, char32_t
 #endif
-                                    wchar_t>::value;
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+                                    , wchar_t
+#endif
+                                    >::value;
 
 template<__is_safe_integral_cmp _Tp, __is_safe_integral_cmp _Up>
 _LIBCPP_INLINE_VISIBILITY constexpr
diff --git a/include/atomic b/include/atomic
index 958935b..a10e596 100644
--- a/include/atomic
+++ b/include/atomic
@@ -1473,7 +1473,9 @@
 #endif
 template<> struct __cxx_is_always_lock_free<char16_t> { enum { __value = 2 == ATOMIC_CHAR16_T_LOCK_FREE }; };
 template<> struct __cxx_is_always_lock_free<char32_t> { enum { __value = 2 == ATOMIC_CHAR32_T_LOCK_FREE }; };
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template<> struct __cxx_is_always_lock_free<wchar_t> { enum { __value = 2 == ATOMIC_WCHAR_T_LOCK_FREE }; };
+#endif
 template<> struct __cxx_is_always_lock_free<short> { enum { __value = 2 == ATOMIC_SHORT_LOCK_FREE }; };
 template<> struct __cxx_is_always_lock_free<unsigned short> { enum { __value = 2 == ATOMIC_SHORT_LOCK_FREE }; };
 template<> struct __cxx_is_always_lock_free<int> { enum { __value = 2 == ATOMIC_INT_LOCK_FREE }; };
@@ -2672,7 +2674,9 @@
 #endif
 typedef atomic<char16_t>           atomic_char16_t;
 typedef atomic<char32_t>           atomic_char32_t;
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 typedef atomic<wchar_t>            atomic_wchar_t;
+#endif
 
 typedef atomic<int_least8_t>   atomic_int_least8_t;
 typedef atomic<uint_least8_t>  atomic_uint_least8_t;
diff --git a/include/codecvt b/include/codecvt
index ec7d4a7..4ae07be 100644
--- a/include/codecvt
+++ b/include/codecvt
@@ -74,6 +74,7 @@
 
 template <class _Elem> class __codecvt_utf8;
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <>
 class _LIBCPP_TYPE_VIS __codecvt_utf8<wchar_t>
     : public codecvt<wchar_t, char, mbstate_t>
@@ -108,6 +109,7 @@
                           size_t __mx) const;
     virtual int do_max_length() const _NOEXCEPT;
 };
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
 template <>
@@ -203,6 +205,7 @@
 
 template <class _Elem, bool _LittleEndian> class __codecvt_utf16;
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <>
 class _LIBCPP_TYPE_VIS __codecvt_utf16<wchar_t, false>
     : public codecvt<wchar_t, char, mbstate_t>
@@ -272,6 +275,7 @@
                           size_t __mx) const;
     virtual int do_max_length() const _NOEXCEPT;
 };
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
 template <>
@@ -443,6 +447,7 @@
 
 template <class _Elem> class __codecvt_utf8_utf16;
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <>
 class _LIBCPP_TYPE_VIS __codecvt_utf8_utf16<wchar_t>
     : public codecvt<wchar_t, char, mbstate_t>
@@ -477,6 +482,7 @@
                           size_t __mx) const;
     virtual int do_max_length() const _NOEXCEPT;
 };
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
 template <>
diff --git a/include/cstddef b/include/cstddef
index 551bd83..3e56d44 100644
--- a/include/cstddef
+++ b/include/cstddef
@@ -58,7 +58,9 @@
 template <>          struct __libcpp_is_integral<char>               { enum { value = 1 }; };
 template <>          struct __libcpp_is_integral<signed char>        { enum { value = 1 }; };
 template <>          struct __libcpp_is_integral<unsigned char>      { enum { value = 1 }; };
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <>          struct __libcpp_is_integral<wchar_t>            { enum { value = 1 }; };
+#endif
 #ifndef _LIBCPP_HAS_NO_CHAR8_T
 template <>          struct __libcpp_is_integral<char8_t>            { enum { value = 1 }; };
 #endif
diff --git a/include/experimental/regex b/include/experimental/regex
index 17193cf..dcd45ac 100644
--- a/include/experimental/regex
+++ b/include/experimental/regex
@@ -52,9 +52,11 @@
         polymorphic_allocator<_VSTD::sub_match<_BiDirIter>>>;
 
 typedef match_results<const char*> cmatch;
-typedef match_results<const wchar_t*> wcmatch;
 typedef match_results<_VSTD_LFTS_PMR::string::const_iterator> smatch;
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+typedef match_results<const wchar_t*> wcmatch;
 typedef match_results<_VSTD_LFTS_PMR::wstring::const_iterator> wsmatch;
+#endif
 
 _LIBCPP_END_NAMESPACE_LFTS_PMR
 
diff --git a/include/experimental/string b/include/experimental/string
index 264ff92..63890ac 100644
--- a/include/experimental/string
+++ b/include/experimental/string
@@ -54,7 +54,9 @@
 typedef basic_string<char> string;
 typedef basic_string<char16_t> u16string;
 typedef basic_string<char32_t> u32string;
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 typedef basic_string<wchar_t> wstring;
+#endif
 
 _LIBCPP_END_NAMESPACE_LFTS_PMR
 
diff --git a/include/filesystem b/include/filesystem
index ccb7bc4..a11d2a4 100644
--- a/include/filesystem
+++ b/include/filesystem
@@ -1283,9 +1283,11 @@
     return __s;
   }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
   _LIBCPP_INLINE_VISIBILITY _VSTD::wstring wstring() const {
     return string<wchar_t>();
   }
+#endif
   _LIBCPP_INLINE_VISIBILITY _VSTD::u16string u16string() const {
     return string<char16_t>();
   }
@@ -1310,7 +1312,9 @@
     return string<_ECharT, _Traits, _Allocator>(__a);
   }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
   _VSTD::wstring generic_wstring() const { return string<wchar_t>(); }
+#endif
   _VSTD::u16string generic_u16string() const { return string<char16_t>(); }
   _VSTD::u32string generic_u32string() const { return string<char32_t>(); }
 #endif /* !_LIBCPP_HAS_NO_LOCALIZATION */
diff --git a/include/format b/include/format
index 9116015..19f6427 100644
--- a/include/format
+++ b/include/format
@@ -318,7 +318,9 @@
 // to do this optimization now.
 
 using format_args = basic_format_args<format_context>;
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 using wformat_args = basic_format_args<wformat_context>;
+#endif
 
 template <class _OutIt, class _CharT>
 using format_args_t = basic_format_args<basic_format_context<_OutIt, _CharT>>;
@@ -335,11 +337,14 @@
   return {basic_format_arg<_Context>(__args)...};
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <class... _Args>
 _LIBCPP_HIDE_FROM_ABI __format_arg_store<wformat_context, _Args...>
 make_wformat_args(const _Args&... __args) {
   return _VSTD::make_format_args<wformat_context>(__args...);
 }
+#endif
+
 namespace __format {
 
 template <class _Tp, class _CharT>
@@ -363,11 +368,13 @@
   __convert(_Uv __value) requires(same_as<_CharT, char>) {
     return _VSTD::to_string(__value);
   }
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
   template <class _Uv>
   _LIBCPP_HIDDEN static wstring
   __convert(_Uv __value) requires(same_as<_CharT, wchar_t>) {
     return _VSTD::to_wstring(__value);
   }
+#endif
 
   template <class _Uv>
   _LIBCPP_HIDDEN auto __handle_format(_Uv __value, auto& __ctx)
@@ -514,12 +521,14 @@
   return _VSTD::__vformat_to(_VSTD::move(__out_it), __fmt, __args);
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <output_iterator<const wchar_t&> _OutIt>
 _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT _OutIt
 vformat_to(_OutIt __out_it, wstring_view __fmt,
            format_args_t<type_identity_t<_OutIt>, wchar_t> __args) {
   return _VSTD::__vformat_to(_VSTD::move(__out_it), __fmt, __args);
 }
+#endif
 
 template <output_iterator<const char&> _OutIt, class... _Args>
 _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT _OutIt
@@ -529,6 +538,7 @@
       _VSTD::make_format_args<basic_format_context<_OutIt, char>>(__args...));
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <output_iterator<const wchar_t&> _OutIt, class... _Args>
 _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT _OutIt
 format_to(_OutIt __out_it, wstring_view __fmt, const _Args&... __args) {
@@ -537,6 +547,7 @@
       _VSTD::make_format_args<basic_format_context<_OutIt, wchar_t>>(
           __args...));
 }
+#endif
 
 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT string
 vformat(string_view __fmt, format_args __args) {
@@ -545,12 +556,14 @@
   return __res;
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT wstring
 vformat(wstring_view __fmt, wformat_args __args) {
   wstring __res;
   _VSTD::vformat_to(_VSTD::back_inserter(__res), __fmt, __args);
   return __res;
 }
+#endif
 
 template <class... _Args>
 _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT string
@@ -558,11 +571,13 @@
   return _VSTD::vformat(__fmt, _VSTD::make_format_args(__args...));
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <class... _Args>
 _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT wstring
 format(wstring_view __fmt, const _Args&... __args) {
   return _VSTD::vformat(__fmt, _VSTD::make_wformat_args(__args...));
 }
+#endif
 
 template <class _OutIt>
 struct _LIBCPP_TEMPLATE_VIS format_to_n_result {
@@ -583,6 +598,7 @@
   return {_VSTD::move(__out_it), __s};
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <output_iterator<const wchar_t&> _OutIt, class... _Args>
 _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT format_to_n_result<_OutIt>
 format_to_n(_OutIt __out_it, iter_difference_t<_OutIt> __n, wstring_view __fmt,
@@ -595,6 +611,7 @@
   __out_it = _VSTD::copy_n(__str.begin(), __m, _VSTD::move(__out_it));
   return {_VSTD::move(__out_it), __s};
 }
+#endif
 
 template <class... _Args>
 _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT size_t
@@ -603,12 +620,14 @@
   return _VSTD::vformat(__fmt, _VSTD::make_format_args(__args...)).size();
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <class... _Args>
 _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT size_t
 formatted_size(wstring_view __fmt, const _Args&... __args) {
   // TODO FMT Improve PoC: using std::string is inefficient.
   return _VSTD::vformat(__fmt, _VSTD::make_wformat_args(__args...)).size();
 }
+#endif
 
 #ifndef _LIBCPP_HAS_NO_LOCALIZATION
 
@@ -630,6 +649,7 @@
                              __args);
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <output_iterator<const wchar_t&> _OutIt>
 _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT _OutIt
 vformat_to(_OutIt __out_it, locale __loc, wstring_view __fmt,
@@ -637,6 +657,7 @@
   return _VSTD::__vformat_to(_VSTD::move(__out_it), _VSTD::move(__loc), __fmt,
                              __args);
 }
+#endif
 
 template <output_iterator<const char&> _OutIt, class... _Args>
 _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT _OutIt format_to(
@@ -646,6 +667,7 @@
       _VSTD::make_format_args<basic_format_context<_OutIt, char>>(__args...));
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <output_iterator<const wchar_t&> _OutIt, class... _Args>
 _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT _OutIt format_to(
     _OutIt __out_it, locale __loc, wstring_view __fmt, const _Args&... __args) {
@@ -654,6 +676,7 @@
       _VSTD::make_format_args<basic_format_context<_OutIt, wchar_t>>(
           __args...));
 }
+#endif
 
 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT string
 vformat(locale __loc, string_view __fmt, format_args __args) {
@@ -663,6 +686,7 @@
   return __res;
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT wstring
 vformat(locale __loc, wstring_view __fmt, wformat_args __args) {
   wstring __res;
@@ -670,6 +694,7 @@
                     __args);
   return __res;
 }
+#endif
 
 template <class... _Args>
 _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT string
@@ -678,12 +703,14 @@
                         _VSTD::make_format_args(__args...));
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <class... _Args>
 _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT wstring
 format(locale __loc, wstring_view __fmt, const _Args&... __args) {
   return _VSTD::vformat(_VSTD::move(__loc), __fmt,
                         _VSTD::make_wformat_args(__args...));
 }
+#endif
 
 template <output_iterator<const char&> _OutIt, class... _Args>
 _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT format_to_n_result<_OutIt>
@@ -699,6 +726,7 @@
   return {_VSTD::move(__out_it), __s};
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <output_iterator<const wchar_t&> _OutIt, class... _Args>
 _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT format_to_n_result<_OutIt>
 format_to_n(_OutIt __out_it, iter_difference_t<_OutIt> __n, locale __loc,
@@ -712,6 +740,7 @@
   __out_it = _VSTD::copy_n(__str.begin(), __m, _VSTD::move(__out_it));
   return {_VSTD::move(__out_it), __s};
 }
+#endif
 
 template <class... _Args>
 _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT size_t
@@ -722,6 +751,7 @@
       .size();
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <class... _Args>
 _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_FORMAT size_t
 formatted_size(locale __loc, wstring_view __fmt, const _Args&... __args) {
@@ -730,6 +760,7 @@
                         _VSTD::make_wformat_args(__args...))
       .size();
 }
+#endif
 
 #endif // _LIBCPP_HAS_NO_LOCALIZATION
 
diff --git a/include/iosfwd b/include/iosfwd
index 974cb42..099b60e 100644
--- a/include/iosfwd
+++ b/include/iosfwd
@@ -95,7 +95,7 @@
 */
 
 #include <__config>
-#include <wchar.h>  // for mbstate_t
+#include <__mbstate_t.h>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
@@ -112,7 +112,9 @@
 #endif
 template<> struct char_traits<char16_t>;
 template<> struct char_traits<char32_t>;
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template<> struct char_traits<wchar_t>;
+#endif
 
 template<class _Tp>     class _LIBCPP_TEMPLATE_VIS allocator;
 
@@ -156,7 +158,9 @@
     class _LIBCPP_TEMPLATE_VIS ostreambuf_iterator;
 
 typedef basic_ios<char>              ios;
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 typedef basic_ios<wchar_t>           wios;
+#endif
 
 typedef basic_streambuf<char>        streambuf;
 typedef basic_istream<char>          istream;
@@ -173,6 +177,7 @@
 typedef basic_ofstream<char>         ofstream;
 typedef basic_fstream<char>          fstream;
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 typedef basic_streambuf<wchar_t>     wstreambuf;
 typedef basic_istream<wchar_t>       wistream;
 typedef basic_ostream<wchar_t>       wostream;
@@ -187,36 +192,37 @@
 typedef basic_ifstream<wchar_t>      wifstream;
 typedef basic_ofstream<wchar_t>      wofstream;
 typedef basic_fstream<wchar_t>       wfstream;
+#endif
 
 template <class _CharT, class _Traits>
-    class _LIBCPP_PREFERRED_NAME(ios) _LIBCPP_PREFERRED_NAME(wios) basic_ios;
+    class _LIBCPP_PREFERRED_NAME(ios) _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wios)) basic_ios;
 
 template <class _CharT, class _Traits>
-    class _LIBCPP_PREFERRED_NAME(streambuf) _LIBCPP_PREFERRED_NAME(wstreambuf) basic_streambuf;
+    class _LIBCPP_PREFERRED_NAME(streambuf) _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wstreambuf)) basic_streambuf;
 template <class _CharT, class _Traits>
-    class _LIBCPP_PREFERRED_NAME(istream) _LIBCPP_PREFERRED_NAME(wistream) basic_istream;
+    class _LIBCPP_PREFERRED_NAME(istream) _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wistream)) basic_istream;
 template <class _CharT, class _Traits>
-    class _LIBCPP_PREFERRED_NAME(ostream) _LIBCPP_PREFERRED_NAME(wostream) basic_ostream;
+    class _LIBCPP_PREFERRED_NAME(ostream) _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wostream)) basic_ostream;
 template <class _CharT, class _Traits>
-    class _LIBCPP_PREFERRED_NAME(iostream) _LIBCPP_PREFERRED_NAME(wiostream) basic_iostream;
+    class _LIBCPP_PREFERRED_NAME(iostream) _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wiostream)) basic_iostream;
 
 template <class _CharT, class _Traits, class _Allocator>
-    class _LIBCPP_PREFERRED_NAME(stringbuf) _LIBCPP_PREFERRED_NAME(wstringbuf) basic_stringbuf;
+    class _LIBCPP_PREFERRED_NAME(stringbuf) _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wstringbuf)) basic_stringbuf;
 template <class _CharT, class _Traits, class _Allocator>
-    class _LIBCPP_PREFERRED_NAME(istringstream) _LIBCPP_PREFERRED_NAME(wistringstream) basic_istringstream;
+    class _LIBCPP_PREFERRED_NAME(istringstream) _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wistringstream)) basic_istringstream;
 template <class _CharT, class _Traits, class _Allocator>
-    class _LIBCPP_PREFERRED_NAME(ostringstream) _LIBCPP_PREFERRED_NAME(wostringstream) basic_ostringstream;
+    class _LIBCPP_PREFERRED_NAME(ostringstream) _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wostringstream)) basic_ostringstream;
 template <class _CharT, class _Traits, class _Allocator>
-    class _LIBCPP_PREFERRED_NAME(stringstream) _LIBCPP_PREFERRED_NAME(wstringstream) basic_stringstream;
+    class _LIBCPP_PREFERRED_NAME(stringstream) _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wstringstream)) basic_stringstream;
 
 template <class _CharT, class _Traits>
-    class _LIBCPP_PREFERRED_NAME(filebuf) _LIBCPP_PREFERRED_NAME(wfilebuf) basic_filebuf;
+    class _LIBCPP_PREFERRED_NAME(filebuf) _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wfilebuf)) basic_filebuf;
 template <class _CharT, class _Traits>
-    class _LIBCPP_PREFERRED_NAME(ifstream) _LIBCPP_PREFERRED_NAME(wifstream) basic_ifstream;
+    class _LIBCPP_PREFERRED_NAME(ifstream) _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wifstream)) basic_ifstream;
 template <class _CharT, class _Traits>
-    class _LIBCPP_PREFERRED_NAME(ofstream) _LIBCPP_PREFERRED_NAME(wofstream) basic_ofstream;
+    class _LIBCPP_PREFERRED_NAME(ofstream) _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wofstream)) basic_ofstream;
 template <class _CharT, class _Traits>
-    class _LIBCPP_PREFERRED_NAME(fstream) _LIBCPP_PREFERRED_NAME(wfstream) basic_fstream;
+    class _LIBCPP_PREFERRED_NAME(fstream) _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wfstream)) basic_fstream;
 
 template <class _State>             class _LIBCPP_TEMPLATE_VIS fpos;
 typedef fpos<mbstate_t>    streampos;
@@ -241,10 +247,12 @@
           class _Allocator = allocator<_CharT> >
     class _LIBCPP_TEMPLATE_VIS basic_string;
 typedef basic_string<char, char_traits<char>, allocator<char> > string;
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 typedef basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> > wstring;
+#endif
 
 template <class _CharT, class _Traits, class _Allocator>
-    class _LIBCPP_PREFERRED_NAME(string) _LIBCPP_PREFERRED_NAME(wstring) basic_string;
+    class _LIBCPP_PREFERRED_NAME(string) _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wstring)) basic_string;
 
 // Include other forward declarations here
 template <class _Tp, class _Alloc = allocator<_Tp> >
diff --git a/include/iostream b/include/iostream
index 788cfe1..f88f013 100644
--- a/include/iostream
+++ b/include/iostream
@@ -46,13 +46,16 @@
 _LIBCPP_BEGIN_NAMESPACE_STD
 
 extern _LIBCPP_FUNC_VIS istream cin;
-extern _LIBCPP_FUNC_VIS wistream wcin;
 extern _LIBCPP_FUNC_VIS ostream cout;
-extern _LIBCPP_FUNC_VIS wostream wcout;
 extern _LIBCPP_FUNC_VIS ostream cerr;
-extern _LIBCPP_FUNC_VIS wostream wcerr;
 extern _LIBCPP_FUNC_VIS ostream clog;
+
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+extern _LIBCPP_FUNC_VIS wistream wcin;
+extern _LIBCPP_FUNC_VIS wostream wcout;
+extern _LIBCPP_FUNC_VIS wostream wcerr;
 extern _LIBCPP_FUNC_VIS wostream wclog;
+#endif
 
 _LIBCPP_END_NAMESPACE_STD
 
diff --git a/include/istream b/include/istream
index 17ca683..6fb296f 100644
--- a/include/istream
+++ b/include/istream
@@ -1628,7 +1628,9 @@
 }
 
 _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_istream<char>)
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_istream<wchar_t>)
+#endif
 _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_iostream<char>)
 
 _LIBCPP_END_NAMESPACE_STD
diff --git a/include/locale b/include/locale
index 25cafdd..c20e15f 100644
--- a/include/locale
+++ b/include/locale
@@ -573,7 +573,9 @@
 }
 
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(struct _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS __num_get<char>)
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(struct _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS __num_get<wchar_t>)
+#endif
 
 template <class _CharT, class _InputIterator = istreambuf_iterator<_CharT> >
 class _LIBCPP_TEMPLATE_VIS num_get
@@ -1111,7 +1113,9 @@
 }
 
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS num_get<char>)
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS num_get<wchar_t>)
+#endif
 
 struct _LIBCPP_TYPE_VIS __num_put_base
 {
@@ -1261,7 +1265,9 @@
 }
 
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(struct _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS __num_put<char>)
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(struct _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS __num_put<wchar_t>)
+#endif
 
 template <class _CharT, class _OutputIterator = ostreambuf_iterator<_CharT> >
 class _LIBCPP_TEMPLATE_VIS num_put
@@ -1694,7 +1700,9 @@
 }
 
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS num_put<char>)
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS num_put<wchar_t>)
+#endif
 
 template <class _CharT, class _InputIterator>
 _LIBCPP_HIDDEN
@@ -1761,6 +1769,7 @@
 template <> _LIBCPP_FUNC_VIS const string& __time_get_c_storage<char>::__x() const;
 template <> _LIBCPP_FUNC_VIS const string& __time_get_c_storage<char>::__X() const;
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <> _LIBCPP_FUNC_VIS const wstring* __time_get_c_storage<wchar_t>::__weeks() const;
 template <> _LIBCPP_FUNC_VIS const wstring* __time_get_c_storage<wchar_t>::__months() const;
 template <> _LIBCPP_FUNC_VIS const wstring* __time_get_c_storage<wchar_t>::__am_pm() const;
@@ -1768,6 +1777,7 @@
 template <> _LIBCPP_FUNC_VIS const wstring& __time_get_c_storage<wchar_t>::__r() const;
 template <> _LIBCPP_FUNC_VIS const wstring& __time_get_c_storage<wchar_t>::__x() const;
 template <> _LIBCPP_FUNC_VIS const wstring& __time_get_c_storage<wchar_t>::__X() const;
+#endif
 
 template <class _CharT, class _InputIterator = istreambuf_iterator<_CharT> >
 class _LIBCPP_TEMPLATE_VIS time_get
@@ -2380,7 +2390,9 @@
 }
 
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS time_get<char>)
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS time_get<wchar_t>)
+#endif
 
 class _LIBCPP_TYPE_VIS __time_get
 {
@@ -2480,7 +2492,9 @@
 };
 
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS time_get_byname<char>)
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS time_get_byname<wchar_t>)
+#endif
 
 class _LIBCPP_TYPE_VIS __time_put
 {
@@ -2593,7 +2607,9 @@
 }
 
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS time_put<char>)
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS time_put<wchar_t>)
+#endif
 
 template <class _CharT, class _OutputIterator = ostreambuf_iterator<_CharT> >
 class _LIBCPP_TEMPLATE_VIS time_put_byname
@@ -2614,7 +2630,9 @@
 };
 
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS time_put_byname<char>)
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS time_put_byname<wchar_t>)
+#endif
 
 // money_base
 
@@ -2682,8 +2700,10 @@
 
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS moneypunct<char, false>)
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS moneypunct<char, true>)
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS moneypunct<wchar_t, false>)
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS moneypunct<wchar_t, true>)
+#endif
 
 // moneypunct_byname
 
@@ -2734,13 +2754,15 @@
 
 template<> _LIBCPP_FUNC_VIS void moneypunct_byname<char, false>::init(const char*);
 template<> _LIBCPP_FUNC_VIS void moneypunct_byname<char, true>::init(const char*);
-template<> _LIBCPP_FUNC_VIS void moneypunct_byname<wchar_t, false>::init(const char*);
-template<> _LIBCPP_FUNC_VIS void moneypunct_byname<wchar_t, true>::init(const char*);
-
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS moneypunct_byname<char, false>)
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS moneypunct_byname<char, true>)
+
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+template<> _LIBCPP_FUNC_VIS void moneypunct_byname<wchar_t, false>::init(const char*);
+template<> _LIBCPP_FUNC_VIS void moneypunct_byname<wchar_t, true>::init(const char*);
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS moneypunct_byname<wchar_t, false>)
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS moneypunct_byname<wchar_t, true>)
+#endif
 
 // money_get
 
@@ -2797,7 +2819,9 @@
 }
 
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS __money_get<char>)
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS __money_get<wchar_t>)
+#endif
 
 template <class _CharT, class _InputIterator = istreambuf_iterator<_CharT> >
 class _LIBCPP_TEMPLATE_VIS money_get
@@ -3184,7 +3208,9 @@
 }
 
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS money_get<char>)
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS money_get<wchar_t>)
+#endif
 
 // money_put
 
@@ -3359,7 +3385,9 @@
 }
 
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS __money_put<char>)
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS __money_put<wchar_t>)
+#endif
 
 template <class _CharT, class _OutputIterator = ostreambuf_iterator<_CharT> >
 class _LIBCPP_TEMPLATE_VIS money_put
@@ -3512,7 +3540,9 @@
 }
 
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS money_put<char>)
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS money_put<wchar_t>)
+#endif
 
 // messages
 
@@ -3628,7 +3658,9 @@
 }
 
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS messages<char>)
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS messages<wchar_t>)
+#endif
 
 template <class _CharT>
 class _LIBCPP_TEMPLATE_VIS messages_byname
@@ -3652,7 +3684,9 @@
 };
 
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS messages_byname<char>)
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 _LIBCPP_EXTERN_TEMPLATE_EVEN_IN_DEBUG_MODE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS messages_byname<wchar_t>)
+#endif
 
 template<class _Codecvt, class _Elem = wchar_t,
          class _Wide_alloc = allocator<_Elem>,
diff --git a/include/module.modulemap b/include/module.modulemap
index d8049cb..80cdfe3 100644
--- a/include/module.modulemap
+++ b/include/module.modulemap
@@ -869,6 +869,7 @@
   module __function_like     { private header "__function_like.h"   export * }
   module __hash_table        { header "__hash_table"        export * }
   module __locale            { private header "__locale"            export * }
+  module __mbstate           { private header "__mbstate_t.h"       export * }
   module __mutex_base        { private header "__mutex_base"        export * }
   module __node_handle       { private header "__node_handle"       export * }
   module __nullptr           { header "__nullptr"           export * }
diff --git a/include/ostream b/include/ostream
index efeaee2..e0aa18f 100644
--- a/include/ostream
+++ b/include/ostream
@@ -1087,7 +1087,9 @@
 }
 
 _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ostream<char>)
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ostream<wchar_t>)
+#endif
 
 _LIBCPP_END_NAMESPACE_STD
 
diff --git a/include/regex b/include/regex
index a0bf3e2..c0d1eda 100644
--- a/include/regex
+++ b/include/regex
@@ -1072,32 +1072,38 @@
     template <class _ForwardIterator>
         string_type
         __transform_primary(_ForwardIterator __f, _ForwardIterator __l, char) const;
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
     template <class _ForwardIterator>
         string_type
         __transform_primary(_ForwardIterator __f, _ForwardIterator __l, wchar_t) const;
-
+#endif
     template <class _ForwardIterator>
         string_type
         __lookup_collatename(_ForwardIterator __f, _ForwardIterator __l, char) const;
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
     template <class _ForwardIterator>
         string_type
         __lookup_collatename(_ForwardIterator __f, _ForwardIterator __l, wchar_t) const;
-
+#endif
     template <class _ForwardIterator>
         char_class_type
         __lookup_classname(_ForwardIterator __f, _ForwardIterator __l,
                            bool __icase, char) const;
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
     template <class _ForwardIterator>
         char_class_type
         __lookup_classname(_ForwardIterator __f, _ForwardIterator __l,
                            bool __icase, wchar_t) const;
+#endif
 
     static int __regex_traits_value(unsigned char __ch, int __radix);
     _LIBCPP_INLINE_VISIBILITY
     int __regex_traits_value(char __ch, int __radix) const
         {return __regex_traits_value(static_cast<unsigned char>(__ch), __radix);}
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
     _LIBCPP_INLINE_VISIBILITY
     int __regex_traits_value(wchar_t __ch, int __radix) const;
+#endif
 };
 
 template <class _CharT>
@@ -1168,6 +1174,7 @@
     return __d;
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <class _CharT>
 template <class _ForwardIterator>
 typename regex_traits<_CharT>::string_type
@@ -1189,6 +1196,7 @@
     }
     return __d;
 }
+#endif
 
 // lookup_collatename is very FreeBSD-specific
 
@@ -1217,6 +1225,7 @@
     return __r;
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <class _CharT>
 template <class _ForwardIterator>
 typename regex_traits<_CharT>::string_type
@@ -1250,6 +1259,7 @@
     }
     return __r;
 }
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 // lookup_classname
 
@@ -1268,6 +1278,7 @@
     return __get_classname(__s.c_str(), __icase);
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <class _CharT>
 template <class _ForwardIterator>
 typename regex_traits<_CharT>::char_class_type
@@ -1288,6 +1299,7 @@
     }
     return __get_classname(__n.c_str(), __icase);
 }
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 template <class _CharT>
 bool
@@ -1318,6 +1330,7 @@
     return -1;
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <class _CharT>
 inline
 int
@@ -1325,6 +1338,7 @@
 {
     return __regex_traits_value(static_cast<unsigned char>(__ct_->narrow(__ch, char_type())), __radix);
 }
+#endif
 
 template <class _CharT> class __node;
 
@@ -2135,7 +2149,9 @@
 };
 
 template <> _LIBCPP_FUNC_VIS void __match_any_but_newline<char>::__exec(__state&) const;
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <> _LIBCPP_FUNC_VIS void __match_any_but_newline<wchar_t>::__exec(__state&) const;
+#endif
 
 // __match_char
 
@@ -2542,13 +2558,15 @@
     class _LIBCPP_TEMPLATE_VIS basic_regex;
 
 typedef basic_regex<char>    regex;
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 typedef basic_regex<wchar_t> wregex;
+#endif
 
 template <class _CharT, class _Traits>
 class
     _LIBCPP_TEMPLATE_VIS
     _LIBCPP_PREFERRED_NAME(regex)
-    _LIBCPP_PREFERRED_NAME(wregex)
+    _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wregex))
     basic_regex
 {
 public:
@@ -4897,17 +4915,19 @@
 // sub_match
 
 typedef sub_match<const char*>             csub_match;
-typedef sub_match<const wchar_t*>          wcsub_match;
 typedef sub_match<string::const_iterator>  ssub_match;
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+typedef sub_match<const wchar_t*>          wcsub_match;
 typedef sub_match<wstring::const_iterator> wssub_match;
+#endif
 
 template <class _BidirectionalIterator>
 class
     _LIBCPP_TEMPLATE_VIS
     _LIBCPP_PREFERRED_NAME(csub_match)
-    _LIBCPP_PREFERRED_NAME(wcsub_match)
+    _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wcsub_match))
     _LIBCPP_PREFERRED_NAME(ssub_match)
-    _LIBCPP_PREFERRED_NAME(wssub_match)
+    _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wssub_match))
     sub_match
     : public pair<_BidirectionalIterator, _BidirectionalIterator>
 {
@@ -5326,17 +5346,19 @@
 }
 
 typedef match_results<const char*>             cmatch;
-typedef match_results<const wchar_t*>          wcmatch;
 typedef match_results<string::const_iterator>  smatch;
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+typedef match_results<const wchar_t*>          wcmatch;
 typedef match_results<wstring::const_iterator> wsmatch;
+#endif
 
 template <class _BidirectionalIterator, class _Allocator>
 class
     _LIBCPP_TEMPLATE_VIS
     _LIBCPP_PREFERRED_NAME(cmatch)
-    _LIBCPP_PREFERRED_NAME(wcmatch)
+    _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wcmatch))
     _LIBCPP_PREFERRED_NAME(smatch)
-    _LIBCPP_PREFERRED_NAME(wsmatch)
+    _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wsmatch))
     match_results
 {
 public:
@@ -6244,17 +6266,19 @@
     class _LIBCPP_TEMPLATE_VIS regex_iterator;
 
 typedef regex_iterator<const char*>             cregex_iterator;
-typedef regex_iterator<const wchar_t*>          wcregex_iterator;
 typedef regex_iterator<string::const_iterator>  sregex_iterator;
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+typedef regex_iterator<const wchar_t*>          wcregex_iterator;
 typedef regex_iterator<wstring::const_iterator> wsregex_iterator;
+#endif
 
 template <class _BidirectionalIterator, class _CharT, class _Traits>
 class
     _LIBCPP_TEMPLATE_VIS
     _LIBCPP_PREFERRED_NAME(cregex_iterator)
-    _LIBCPP_PREFERRED_NAME(wcregex_iterator)
+    _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wcregex_iterator))
     _LIBCPP_PREFERRED_NAME(sregex_iterator)
-    _LIBCPP_PREFERRED_NAME(wsregex_iterator)
+    _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wsregex_iterator))
     regex_iterator
 {
 public:
@@ -6372,17 +6396,19 @@
     class _LIBCPP_TEMPLATE_VIS regex_token_iterator;
 
 typedef regex_token_iterator<const char*>             cregex_token_iterator;
-typedef regex_token_iterator<const wchar_t*>          wcregex_token_iterator;
 typedef regex_token_iterator<string::const_iterator>  sregex_token_iterator;
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+typedef regex_token_iterator<const wchar_t*>          wcregex_token_iterator;
 typedef regex_token_iterator<wstring::const_iterator> wsregex_token_iterator;
+#endif
 
 template <class _BidirectionalIterator, class _CharT, class _Traits>
 class
     _LIBCPP_TEMPLATE_VIS
     _LIBCPP_PREFERRED_NAME(cregex_token_iterator)
-    _LIBCPP_PREFERRED_NAME(wcregex_token_iterator)
+    _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wcregex_token_iterator))
     _LIBCPP_PREFERRED_NAME(sregex_token_iterator)
-    _LIBCPP_PREFERRED_NAME(wsregex_token_iterator)
+    _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wsregex_token_iterator))
     regex_token_iterator
 {
 public:
diff --git a/include/string b/include/string
index c6a799d..53b4e09 100644
--- a/include/string
+++ b/include/string
@@ -524,7 +524,6 @@
 #include <cstdio>  // EOF
 #include <cstdlib>
 #include <cstring>
-#include <cwchar>
 #include <initializer_list>
 #include <iosfwd>
 #include <iterator>
@@ -535,6 +534,10 @@
 #include <utility>
 #include <version>
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+#   include <cwchar>
+#endif
+
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
 # include <cstdint>
 #endif
@@ -1729,11 +1732,15 @@
 // These declarations must appear before any functions are implicitly used
 // so that they have the correct visibility specifier.
 #ifdef _LIBCPP_ABI_STRING_OPTIMIZED_EXTERNAL_INSTANTIATION
-_LIBCPP_STRING_UNSTABLE_EXTERN_TEMPLATE_LIST(_LIBCPP_EXTERN_TEMPLATE, char)
-_LIBCPP_STRING_UNSTABLE_EXTERN_TEMPLATE_LIST(_LIBCPP_EXTERN_TEMPLATE, wchar_t)
+    _LIBCPP_STRING_UNSTABLE_EXTERN_TEMPLATE_LIST(_LIBCPP_EXTERN_TEMPLATE, char)
+#   ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+        _LIBCPP_STRING_UNSTABLE_EXTERN_TEMPLATE_LIST(_LIBCPP_EXTERN_TEMPLATE, wchar_t)
+#   endif
 #else
-_LIBCPP_STRING_V1_EXTERN_TEMPLATE_LIST(_LIBCPP_EXTERN_TEMPLATE, char)
-_LIBCPP_STRING_V1_EXTERN_TEMPLATE_LIST(_LIBCPP_EXTERN_TEMPLATE, wchar_t)
+    _LIBCPP_STRING_V1_EXTERN_TEMPLATE_LIST(_LIBCPP_EXTERN_TEMPLATE, char)
+#   ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+        _LIBCPP_STRING_V1_EXTERN_TEMPLATE_LIST(_LIBCPP_EXTERN_TEMPLATE, wchar_t)
+#   endif
 #endif
 
 
@@ -4395,6 +4402,7 @@
 _LIBCPP_FUNC_VIS string to_string(double __val);
 _LIBCPP_FUNC_VIS string to_string(long double __val);
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 _LIBCPP_FUNC_VIS int                stoi  (const wstring& __str, size_t* __idx = nullptr, int __base = 10);
 _LIBCPP_FUNC_VIS long               stol  (const wstring& __str, size_t* __idx = nullptr, int __base = 10);
 _LIBCPP_FUNC_VIS unsigned long      stoul (const wstring& __str, size_t* __idx = nullptr, int __base = 10);
@@ -4414,6 +4422,7 @@
 _LIBCPP_FUNC_VIS wstring to_wstring(float __val);
 _LIBCPP_FUNC_VIS wstring to_wstring(double __val);
 _LIBCPP_FUNC_VIS wstring to_wstring(long double __val);
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 template<class _CharT, class _Traits, class _Allocator>
 _LIBCPP_TEMPLATE_DATA_VIS
@@ -4535,11 +4544,13 @@
         return basic_string<char> (__str, __len);
     }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
     inline _LIBCPP_INLINE_VISIBILITY
     basic_string<wchar_t> operator "" s( const wchar_t *__str, size_t __len )
     {
         return basic_string<wchar_t> (__str, __len);
     }
+#endif
 
 #ifndef _LIBCPP_HAS_NO_CHAR8_T
     inline _LIBCPP_INLINE_VISIBILITY
diff --git a/include/string_view b/include/string_view
index 45bb765..b9d00b3 100644
--- a/include/string_view
+++ b/include/string_view
@@ -225,7 +225,9 @@
 #endif
 typedef basic_string_view<char16_t> u16string_view;
 typedef basic_string_view<char32_t> u32string_view;
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 typedef basic_string_view<wchar_t>  wstring_view;
+#endif
 
 template<class _CharT, class _Traits>
 class
@@ -235,7 +237,7 @@
 #endif
     _LIBCPP_PREFERRED_NAME(u16string_view)
     _LIBCPP_PREFERRED_NAME(u32string_view)
-    _LIBCPP_PREFERRED_NAME(wstring_view)
+    _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wstring_view))
     basic_string_view {
 public:
     // types
@@ -885,11 +887,13 @@
         return basic_string_view<char> (__str, __len);
     }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
     inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
     basic_string_view<wchar_t> operator "" sv(const wchar_t *__str, size_t __len) _NOEXCEPT
     {
         return basic_string_view<wchar_t> (__str, __len);
     }
+#endif
 
 #ifndef _LIBCPP_HAS_NO_CHAR8_T
     inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
diff --git a/include/wchar.h b/include/wchar.h
index 4d391f9..0802640 100644
--- a/include/wchar.h
+++ b/include/wchar.h
@@ -108,6 +108,10 @@
 #include <__config>
 #include <stddef.h>
 
+#if defined(_LIBCPP_HAS_NO_WIDE_CHARACTERS)
+#   error "The <wchar.h> header is not supported since libc++ has been configured with LIBCXX_ENABLE_WIDE_CHARACTERS disabled"
+#endif
+
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
 #endif
diff --git a/include/wctype.h b/include/wctype.h
index 3b61475..8dd8232 100644
--- a/include/wctype.h
+++ b/include/wctype.h
@@ -46,6 +46,10 @@
 
 #include <__config>
 
+#if defined(_LIBCPP_HAS_NO_WIDE_CHARACTERS)
+#   error "The <wctype.h> header is not supported since libc++ has been configured with LIBCXX_ENABLE_WIDE_CHARACTERS disabled"
+#endif
+
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
 #endif
diff --git a/src/algorithm.cpp b/src/algorithm.cpp
index 9f11dc3..16221f4 100644
--- a/src/algorithm.cpp
+++ b/src/algorithm.cpp
@@ -11,7 +11,9 @@
 _LIBCPP_BEGIN_NAMESPACE_STD
 
 template void __sort<__less<char>&, char*>(char*, char*, __less<char>&);
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template void __sort<__less<wchar_t>&, wchar_t*>(wchar_t*, wchar_t*, __less<wchar_t>&);
+#endif
 template void __sort<__less<signed char>&, signed char*>(signed char*, signed char*, __less<signed char>&);
 template void __sort<__less<unsigned char>&, unsigned char*>(unsigned char*, unsigned char*, __less<unsigned char>&);
 template void __sort<__less<short>&, short*>(short*, short*, __less<short>&);
@@ -27,7 +29,9 @@
 template void __sort<__less<long double>&, long double*>(long double*, long double*, __less<long double>&);
 
 template bool __insertion_sort_incomplete<__less<char>&, char*>(char*, char*, __less<char>&);
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template bool __insertion_sort_incomplete<__less<wchar_t>&, wchar_t*>(wchar_t*, wchar_t*, __less<wchar_t>&);
+#endif
 template bool __insertion_sort_incomplete<__less<signed char>&, signed char*>(signed char*, signed char*, __less<signed char>&);
 template bool __insertion_sort_incomplete<__less<unsigned char>&, unsigned char*>(unsigned char*, unsigned char*, __less<unsigned char>&);
 template bool __insertion_sort_incomplete<__less<short>&, short*>(short*, short*, __less<short>&);
diff --git a/src/ios.instantiations.cpp b/src/ios.instantiations.cpp
index 1a23687..e1189d0 100644
--- a/src/ios.instantiations.cpp
+++ b/src/ios.instantiations.cpp
@@ -19,15 +19,18 @@
 
 // Original explicit instantiations provided in the library
 template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS basic_ios<char>;
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS basic_ios<wchar_t>;
 template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS basic_streambuf<char>;
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS basic_streambuf<wchar_t>;
 template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS basic_istream<char>;
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS basic_istream<wchar_t>;
 template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS basic_ostream<char>;
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS basic_ostream<wchar_t>;
 template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS basic_iostream<char>;
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS basic_ios<wchar_t>;
+template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS basic_streambuf<wchar_t>;
+template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS basic_istream<wchar_t>;
+template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS basic_ostream<wchar_t>;
+#endif
+
 // Additional instantiations added later. Whether programs rely on these being
 // available is protected by _LIBCPP_ABI_ENABLE_ADDITIONAL_IOSTREAM_EXPLICIT_INSTANTIATIONS_1.
 template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS basic_stringbuf<char>;
diff --git a/src/iostream.cpp b/src/iostream.cpp
index 99bd528..61d5e54 100644
--- a/src/iostream.cpp
+++ b/src/iostream.cpp
@@ -24,6 +24,8 @@
 ;
 _ALIGNAS_TYPE (__stdinbuf<char> ) static char __cin[sizeof(__stdinbuf <char>)];
 static mbstate_t mb_cin;
+
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 _ALIGNAS_TYPE (wistream) _LIBCPP_FUNC_VIS char wcin[sizeof(wistream)]
 #if defined(_LIBCPP_ABI_MICROSOFT) && defined(__clang__)
 __asm__("?wcin@" _LIBCPP_ABI_NAMESPACE_STR "@std@@3V?$basic_istream@_WU?$char_traits@_W@" _LIBCPP_ABI_NAMESPACE_STR "@std@@@12@A")
@@ -31,6 +33,7 @@
 ;
 _ALIGNAS_TYPE (__stdinbuf<wchar_t> ) static char __wcin[sizeof(__stdinbuf <wchar_t>)];
 static mbstate_t mb_wcin;
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 _ALIGNAS_TYPE (ostream) _LIBCPP_FUNC_VIS char cout[sizeof(ostream)]
 #if defined(_LIBCPP_ABI_MICROSOFT) && defined(__clang__)
@@ -39,6 +42,8 @@
 ;
 _ALIGNAS_TYPE (__stdoutbuf<char>) static char __cout[sizeof(__stdoutbuf<char>)];
 static mbstate_t mb_cout;
+
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 _ALIGNAS_TYPE (wostream) _LIBCPP_FUNC_VIS char wcout[sizeof(wostream)]
 #if defined(_LIBCPP_ABI_MICROSOFT) && defined(__clang__)
 __asm__("?wcout@" _LIBCPP_ABI_NAMESPACE_STR "@std@@3V?$basic_ostream@_WU?$char_traits@_W@" _LIBCPP_ABI_NAMESPACE_STR "@std@@@12@A")
@@ -46,6 +51,7 @@
 ;
 _ALIGNAS_TYPE (__stdoutbuf<wchar_t>) static char __wcout[sizeof(__stdoutbuf<wchar_t>)];
 static mbstate_t mb_wcout;
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 _ALIGNAS_TYPE (ostream) _LIBCPP_FUNC_VIS char cerr[sizeof(ostream)]
 #if defined(_LIBCPP_ABI_MICROSOFT) && defined(__clang__)
@@ -54,6 +60,8 @@
 ;
 _ALIGNAS_TYPE (__stdoutbuf<char>) static char __cerr[sizeof(__stdoutbuf<char>)];
 static mbstate_t mb_cerr;
+
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 _ALIGNAS_TYPE (wostream) _LIBCPP_FUNC_VIS char wcerr[sizeof(wostream)]
 #if defined(_LIBCPP_ABI_MICROSOFT) && defined(__clang__)
 __asm__("?wcerr@" _LIBCPP_ABI_NAMESPACE_STR "@std@@3V?$basic_ostream@_WU?$char_traits@_W@" _LIBCPP_ABI_NAMESPACE_STR "@std@@@12@A")
@@ -61,17 +69,21 @@
 ;
 _ALIGNAS_TYPE (__stdoutbuf<wchar_t>) static char __wcerr[sizeof(__stdoutbuf<wchar_t>)];
 static mbstate_t mb_wcerr;
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 _ALIGNAS_TYPE (ostream) _LIBCPP_FUNC_VIS char clog[sizeof(ostream)]
 #if defined(_LIBCPP_ABI_MICROSOFT) && defined(__clang__)
 __asm__("?clog@" _LIBCPP_ABI_NAMESPACE_STR "@std@@3V?$basic_ostream@DU?$char_traits@D@" _LIBCPP_ABI_NAMESPACE_STR "@std@@@12@A")
 #endif
 ;
+
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 _ALIGNAS_TYPE (wostream) _LIBCPP_FUNC_VIS char wclog[sizeof(wostream)]
 #if defined(_LIBCPP_ABI_MICROSOFT) && defined(__clang__)
 __asm__("?wclog@" _LIBCPP_ABI_NAMESPACE_STR "@std@@3V?$basic_ostream@_WU?$char_traits@_W@" _LIBCPP_ABI_NAMESPACE_STR "@std@@@12@A")
 #endif
 ;
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 // Hacky way to make the compiler believe that we're inside a system header so
 // it doesn't flag the use of the init_priority attribute with a value that's
@@ -109,33 +121,38 @@
     force_locale_initialization();
 
     istream* cin_ptr  = ::new(cin)  istream(::new(__cin)  __stdinbuf <char>(stdin, &mb_cin));
-    wistream* wcin_ptr  = ::new(wcin)  wistream(::new(__wcin)  __stdinbuf <wchar_t>(stdin, &mb_wcin));
     ostream* cout_ptr = ::new(cout) ostream(::new(__cout) __stdoutbuf<char>(stdout, &mb_cout));
-    wostream* wcout_ptr = ::new(wcout) wostream(::new(__wcout) __stdoutbuf<wchar_t>(stdout, &mb_wcout));
     ostream* cerr_ptr = ::new(cerr) ostream(::new(__cerr) __stdoutbuf<char>(stderr, &mb_cerr));
                         ::new(clog) ostream(cerr_ptr->rdbuf());
+    cin_ptr->tie(cout_ptr);
+    _VSTD::unitbuf(*cerr_ptr);
+    cerr_ptr->tie(cout_ptr);
+
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+    wistream* wcin_ptr  = ::new(wcin)  wistream(::new(__wcin)  __stdinbuf <wchar_t>(stdin, &mb_wcin));
+    wostream* wcout_ptr = ::new(wcout) wostream(::new(__wcout) __stdoutbuf<wchar_t>(stdout, &mb_wcout));
     wostream* wcerr_ptr = ::new(wcerr) wostream(::new(__wcerr) __stdoutbuf<wchar_t>(stderr, &mb_wcerr));
                           ::new(wclog) wostream(wcerr_ptr->rdbuf());
 
-    cin_ptr->tie(cout_ptr);
     wcin_ptr->tie(wcout_ptr);
-    _VSTD::unitbuf(*cerr_ptr);
     _VSTD::unitbuf(*wcerr_ptr);
-    cerr_ptr->tie(cout_ptr);
     wcerr_ptr->tie(wcout_ptr);
+#endif
 }
 
 DoIOSInit::~DoIOSInit()
 {
     ostream* cout_ptr = reinterpret_cast<ostream*>(cout);
-    wostream* wcout_ptr = reinterpret_cast<wostream*>(wcout);
     cout_ptr->flush();
-    wcout_ptr->flush();
-
     ostream* clog_ptr = reinterpret_cast<ostream*>(clog);
-    wostream* wclog_ptr = reinterpret_cast<wostream*>(wclog);
     clog_ptr->flush();
+
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+    wostream* wcout_ptr = reinterpret_cast<wostream*>(wcout);
+    wcout_ptr->flush();
+    wostream* wclog_ptr = reinterpret_cast<wostream*>(wclog);
     wclog_ptr->flush();
+#endif
 }
 
 ios_base::Init::Init()
diff --git a/src/locale.cpp b/src/locale.cpp
index 8aa67f7..d069b42 100644
--- a/src/locale.cpp
+++ b/src/locale.cpp
@@ -18,13 +18,16 @@
 #include "cstdio"
 #include "cstdlib"
 #include "cstring"
-#include "cwctype"
 #include "locale"
 #include "string"
 #include "type_traits"
 #include "typeinfo"
 #include "vector"
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+#   include "cwctype"
+#endif
+
 #if defined(_LIBCPP_MSVCRT)
 #   define _CTYPE_DISABLE_MACROS
 #endif
@@ -176,11 +179,17 @@
 {
     facets_.clear();
     install(&make<_VSTD::collate<char> >(1u));
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
     install(&make<_VSTD::collate<wchar_t> >(1u));
+#endif
     install(&make<_VSTD::ctype<char> >(nullptr, false, 1u));
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
     install(&make<_VSTD::ctype<wchar_t> >(1u));
+#endif
     install(&make<codecvt<char, char, mbstate_t> >(1u));
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
     install(&make<codecvt<wchar_t, char, mbstate_t> >(1u));
+#endif
 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
     install(&make<codecvt<char16_t, char, mbstate_t> >(1u));
     install(&make<codecvt<char32_t, char, mbstate_t> >(1u));
@@ -190,25 +199,43 @@
     install(&make<codecvt<char32_t, char8_t, mbstate_t> >(1u));
 #endif
     install(&make<numpunct<char> >(1u));
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
     install(&make<numpunct<wchar_t> >(1u));
+#endif
     install(&make<num_get<char> >(1u));
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
     install(&make<num_get<wchar_t> >(1u));
+#endif
     install(&make<num_put<char> >(1u));
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
     install(&make<num_put<wchar_t> >(1u));
+#endif
     install(&make<moneypunct<char, false> >(1u));
     install(&make<moneypunct<char, true> >(1u));
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
     install(&make<moneypunct<wchar_t, false> >(1u));
     install(&make<moneypunct<wchar_t, true> >(1u));
+#endif
     install(&make<money_get<char> >(1u));
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
     install(&make<money_get<wchar_t> >(1u));
+#endif
     install(&make<money_put<char> >(1u));
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
     install(&make<money_put<wchar_t> >(1u));
+#endif
     install(&make<time_get<char> >(1u));
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
     install(&make<time_get<wchar_t> >(1u));
+#endif
     install(&make<time_put<char> >(1u));
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
     install(&make<time_put<wchar_t> >(1u));
+#endif
     install(&make<_VSTD::messages<char> >(1u));
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
     install(&make<_VSTD::messages<wchar_t> >(1u));
+#endif
 }
 
 locale::__imp::__imp(const string& name, size_t refs)
@@ -225,11 +252,17 @@
             if (facets_[i])
                 facets_[i]->__add_shared();
         install(new collate_byname<char>(name_));
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
         install(new collate_byname<wchar_t>(name_));
+#endif
         install(new ctype_byname<char>(name_));
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
         install(new ctype_byname<wchar_t>(name_));
+#endif
         install(new codecvt_byname<char, char, mbstate_t>(name_));
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
         install(new codecvt_byname<wchar_t, char, mbstate_t>(name_));
+#endif
 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
         install(new codecvt_byname<char16_t, char, mbstate_t>(name_));
         install(new codecvt_byname<char32_t, char, mbstate_t>(name_));
@@ -239,17 +272,27 @@
         install(new codecvt_byname<char32_t, char8_t, mbstate_t>(name_));
 #endif
         install(new numpunct_byname<char>(name_));
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
         install(new numpunct_byname<wchar_t>(name_));
+#endif
         install(new moneypunct_byname<char, false>(name_));
         install(new moneypunct_byname<char, true>(name_));
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
         install(new moneypunct_byname<wchar_t, false>(name_));
         install(new moneypunct_byname<wchar_t, true>(name_));
+#endif
         install(new time_get_byname<char>(name_));
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
         install(new time_get_byname<wchar_t>(name_));
+#endif
         install(new time_put_byname<char>(name_));
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
         install(new time_put_byname<wchar_t>(name_));
+#endif
         install(new messages_byname<char>(name_));
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
         install(new messages_byname<wchar_t>(name_));
+#endif
 #ifndef _LIBCPP_NO_EXCEPTIONS
     }
     catch (...)
@@ -287,14 +330,20 @@
         if (c & locale::collate)
         {
             install(new collate_byname<char>(name));
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
             install(new collate_byname<wchar_t>(name));
+#endif
         }
         if (c & locale::ctype)
         {
             install(new ctype_byname<char>(name));
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
             install(new ctype_byname<wchar_t>(name));
+#endif
             install(new codecvt_byname<char, char, mbstate_t>(name));
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
             install(new codecvt_byname<wchar_t, char, mbstate_t>(name));
+#endif
 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
             install(new codecvt_byname<char16_t, char, mbstate_t>(name));
             install(new codecvt_byname<char32_t, char, mbstate_t>(name));
@@ -308,25 +357,35 @@
         {
             install(new moneypunct_byname<char, false>(name));
             install(new moneypunct_byname<char, true>(name));
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
             install(new moneypunct_byname<wchar_t, false>(name));
             install(new moneypunct_byname<wchar_t, true>(name));
+#endif
         }
         if (c & locale::numeric)
         {
             install(new numpunct_byname<char>(name));
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
             install(new numpunct_byname<wchar_t>(name));
+#endif
         }
         if (c & locale::time)
         {
             install(new time_get_byname<char>(name));
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
             install(new time_get_byname<wchar_t>(name));
+#endif
             install(new time_put_byname<char>(name));
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
             install(new time_put_byname<wchar_t>(name));
+#endif
         }
         if (c & locale::messages)
         {
             install(new messages_byname<char>(name));
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
             install(new messages_byname<wchar_t>(name));
+#endif
         }
 #ifndef _LIBCPP_NO_EXCEPTIONS
     }
@@ -364,12 +423,16 @@
         if (c & locale::collate)
         {
             install_from<_VSTD::collate<char> >(one);
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
             install_from<_VSTD::collate<wchar_t> >(one);
+#endif
         }
         if (c & locale::ctype)
         {
             install_from<_VSTD::ctype<char> >(one);
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
             install_from<_VSTD::ctype<wchar_t> >(one);
+#endif
             install_from<_VSTD::codecvt<char, char, mbstate_t> >(one);
 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
             install_from<_VSTD::codecvt<char16_t, char, mbstate_t> >(one);
@@ -379,39 +442,59 @@
             install_from<_VSTD::codecvt<char16_t, char8_t, mbstate_t> >(one);
             install_from<_VSTD::codecvt<char32_t, char8_t, mbstate_t> >(one);
 #endif
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
             install_from<_VSTD::codecvt<wchar_t, char, mbstate_t> >(one);
+#endif
         }
         if (c & locale::monetary)
         {
             install_from<moneypunct<char, false> >(one);
             install_from<moneypunct<char, true> >(one);
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
             install_from<moneypunct<wchar_t, false> >(one);
             install_from<moneypunct<wchar_t, true> >(one);
+#endif
             install_from<money_get<char> >(one);
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
             install_from<money_get<wchar_t> >(one);
+#endif
             install_from<money_put<char> >(one);
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
             install_from<money_put<wchar_t> >(one);
+#endif
         }
         if (c & locale::numeric)
         {
             install_from<numpunct<char> >(one);
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
             install_from<numpunct<wchar_t> >(one);
+#endif
             install_from<num_get<char> >(one);
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
             install_from<num_get<wchar_t> >(one);
+#endif
             install_from<num_put<char> >(one);
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
             install_from<num_put<wchar_t> >(one);
+#endif
         }
         if (c & locale::time)
         {
             install_from<time_get<char> >(one);
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
             install_from<time_get<wchar_t> >(one);
+#endif
             install_from<time_put<char> >(one);
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
             install_from<time_put<wchar_t> >(one);
+#endif
         }
         if (c & locale::messages)
         {
             install_from<_VSTD::messages<char> >(one);
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
             install_from<_VSTD::messages<wchar_t> >(one);
+#endif
         }
 #ifndef _LIBCPP_NO_EXCEPTIONS
     }
@@ -702,6 +785,7 @@
 
 // template <> class collate_byname<wchar_t>
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 collate_byname<wchar_t>::collate_byname(const char* n, size_t refs)
     : collate<wchar_t>(refs),
       __l(newlocale(LC_ALL_MASK, n, 0))
@@ -747,6 +831,7 @@
     wcsxfrm_l(const_cast<wchar_t*>(out.c_str()), in.c_str(), out.size()+1, __l);
     return out;
 }
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 const ctype_base::mask ctype_base::space;
 const ctype_base::mask ctype_base::print;
@@ -763,6 +848,7 @@
 
 // template <> class ctype<wchar_t>;
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 locale::id ctype<wchar_t>::id;
 
 ctype<wchar_t>::~ctype()
@@ -892,6 +978,7 @@
             *dest = dfault;
     return low;
 }
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 // template <> class ctype<char>;
 
@@ -1223,6 +1310,7 @@
 
 // template <> class ctype_byname<wchar_t>
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 ctype_byname<wchar_t>::ctype_byname(const char* name, size_t refs)
     : ctype<wchar_t>(refs),
       __l(newlocale(LC_ALL_MASK, name, 0))
@@ -1422,6 +1510,7 @@
     }
     return low;
 }
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 // template <> class codecvt<char, char, mbstate_t>
 
@@ -1486,6 +1575,7 @@
 
 // template <> class codecvt<wchar_t, char, mbstate_t>
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 locale::id codecvt<wchar_t, char, mbstate_t>::id;
 
 codecvt<wchar_t, char, mbstate_t>::codecvt(size_t refs)
@@ -1698,6 +1788,7 @@
 {
     return __l == 0 ? 1 : static_cast<int>(__libcpp_mb_cur_max_l(__l));
 }
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 //                                     Valid UTF ranges
 //     UTF-32               UTF-16                          UTF-8               # of code points
@@ -3404,6 +3495,7 @@
 
 // __codecvt_utf8<wchar_t>
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 __codecvt_utf8<wchar_t>::result
 __codecvt_utf8<wchar_t>::do_out(state_type&,
     const intern_type* frm, const intern_type* frm_end, const intern_type*& frm_nxt,
@@ -3505,6 +3597,7 @@
     return 4;
 #endif
 }
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 // __codecvt_utf8<char16_t>
 
@@ -3658,6 +3751,7 @@
 
 // __codecvt_utf16<wchar_t, false>
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 __codecvt_utf16<wchar_t, false>::result
 __codecvt_utf16<wchar_t, false>::do_out(state_type&,
     const intern_type* frm, const intern_type* frm_end, const intern_type*& frm_nxt,
@@ -3863,6 +3957,7 @@
     return 4;
 #endif
 }
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 // __codecvt_utf16<char16_t, false>
 
@@ -4166,6 +4261,7 @@
 
 // __codecvt_utf8_utf16<wchar_t>
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 __codecvt_utf8_utf16<wchar_t>::result
 __codecvt_utf8_utf16<wchar_t>::do_out(state_type&,
     const intern_type* frm, const intern_type* frm_end, const intern_type*& frm_nxt,
@@ -4250,6 +4346,7 @@
         return 7;
     return 4;
 }
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 // __codecvt_utf8_utf16<char16_t>
 
@@ -4425,7 +4522,7 @@
 {
 }
 
-
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 static bool checked_string_to_wchar_convert(wchar_t& dest,
                                             const char* ptr,
                                             locale_t loc) {
@@ -4440,6 +4537,7 @@
   dest = out;
   return true;
 }
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 static bool checked_string_to_char_convert(char& dest,
                                            const char* ptr,
@@ -4450,6 +4548,8 @@
     dest = *ptr;
     return true;
   }
+
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
   // First convert the MBS into a wide char then attempt to narrow it using
   // wctob_l.
   wchar_t wout;
@@ -4470,6 +4570,9 @@
   default:
     return false;
   }
+#else // _LIBCPP_HAS_NO_WIDE_CHARACTERS
+  return false;
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
   _LIBCPP_UNREACHABLE();
 }
 
@@ -4477,7 +4580,9 @@
 // numpunct<char> && numpunct<wchar_t>
 
 locale::id numpunct< char  >::id;
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 locale::id numpunct<wchar_t>::id;
+#endif
 
 numpunct<char>::numpunct(size_t refs)
     : locale::facet(refs),
@@ -4486,35 +4591,49 @@
 {
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 numpunct<wchar_t>::numpunct(size_t refs)
     : locale::facet(refs),
       __decimal_point_(L'.'),
       __thousands_sep_(L',')
 {
 }
+#endif
 
 numpunct<char>::~numpunct()
 {
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 numpunct<wchar_t>::~numpunct()
 {
 }
+#endif
 
  char   numpunct< char  >::do_decimal_point() const {return __decimal_point_;}
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 wchar_t numpunct<wchar_t>::do_decimal_point() const {return __decimal_point_;}
+#endif
 
  char   numpunct< char  >::do_thousands_sep() const {return __thousands_sep_;}
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 wchar_t numpunct<wchar_t>::do_thousands_sep() const {return __thousands_sep_;}
+#endif
 
 string numpunct< char  >::do_grouping() const {return __grouping_;}
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 string numpunct<wchar_t>::do_grouping() const {return __grouping_;}
+#endif
 
  string numpunct< char  >::do_truename() const {return "true";}
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 wstring numpunct<wchar_t>::do_truename() const {return L"true";}
+#endif
 
  string numpunct< char  >::do_falsename() const {return "false";}
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 wstring numpunct<wchar_t>::do_falsename() const {return L"false";}
+#endif
 
 // numpunct_byname<char>
 
@@ -4537,6 +4656,7 @@
 void
 numpunct_byname<char>::__init(const char* nm)
 {
+    typedef numpunct<char> base;
     if (strcmp(nm, "C") != 0)
     {
         __libcpp_unique_locale loc(nm);
@@ -4545,10 +4665,12 @@
                                 " failed to construct for " + string(nm));
 
         lconv* lc = __libcpp_localeconv_l(loc.get());
-        checked_string_to_char_convert(__decimal_point_, lc->decimal_point,
-                                       loc.get());
-        checked_string_to_char_convert(__thousands_sep_, lc->thousands_sep,
-                                       loc.get());
+        if (!checked_string_to_char_convert(__decimal_point_, lc->decimal_point,
+                                            loc.get()))
+            __decimal_point_ = base::do_decimal_point();
+        if (!checked_string_to_char_convert(__thousands_sep_, lc->thousands_sep,
+                                            loc.get()))
+            __thousands_sep_ = base::do_thousands_sep();
         __grouping_ = lc->grouping;
         // localization for truename and falsename is not available
     }
@@ -4556,6 +4678,7 @@
 
 // numpunct_byname<wchar_t>
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 numpunct_byname<wchar_t>::numpunct_byname(const char* nm, size_t refs)
     : numpunct<wchar_t>(refs)
 {
@@ -4591,6 +4714,7 @@
         // localization for truename and falsename is not available
     }
 }
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 // num_get helpers
 
@@ -4766,6 +4890,7 @@
     return weeks;
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 static
 wstring*
 init_wweeks()
@@ -4787,6 +4912,7 @@
     weeks[13] = L"Sat";
     return weeks;
 }
+#endif
 
 template <>
 const string*
@@ -4796,6 +4922,7 @@
     return weeks;
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <>
 const wstring*
 __time_get_c_storage<wchar_t>::__weeks() const
@@ -4803,6 +4930,7 @@
     static const wstring* weeks = init_wweeks();
     return weeks;
 }
+#endif
 
 static
 string*
@@ -4836,6 +4964,7 @@
     return months;
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 static
 wstring*
 init_wmonths()
@@ -4867,6 +4996,7 @@
     months[23] = L"Dec";
     return months;
 }
+#endif
 
 template <>
 const string*
@@ -4876,6 +5006,7 @@
     return months;
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <>
 const wstring*
 __time_get_c_storage<wchar_t>::__months() const
@@ -4883,6 +5014,7 @@
     static const wstring* months = init_wmonths();
     return months;
 }
+#endif
 
 static
 string*
@@ -4894,6 +5026,7 @@
     return am_pm;
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 static
 wstring*
 init_wam_pm()
@@ -4903,6 +5036,7 @@
     am_pm[1]  = L"PM";
     return am_pm;
 }
+#endif
 
 template <>
 const string*
@@ -4912,6 +5046,7 @@
     return am_pm;
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <>
 const wstring*
 __time_get_c_storage<wchar_t>::__am_pm() const
@@ -4919,6 +5054,7 @@
     static const wstring* am_pm = init_wam_pm();
     return am_pm;
 }
+#endif
 
 template <>
 const string&
@@ -4928,6 +5064,7 @@
     return s;
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <>
 const wstring&
 __time_get_c_storage<wchar_t>::__x() const
@@ -4935,6 +5072,7 @@
     static wstring s(L"%m/%d/%y");
     return s;
 }
+#endif
 
 template <>
 const string&
@@ -4944,6 +5082,7 @@
     return s;
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <>
 const wstring&
 __time_get_c_storage<wchar_t>::__X() const
@@ -4951,6 +5090,7 @@
     static wstring s(L"%H:%M:%S");
     return s;
 }
+#endif
 
 template <>
 const string&
@@ -4960,6 +5100,7 @@
     return s;
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <>
 const wstring&
 __time_get_c_storage<wchar_t>::__c() const
@@ -4967,6 +5108,7 @@
     static wstring s(L"%a %b %d %H:%M:%S %Y");
     return s;
 }
+#endif
 
 template <>
 const string&
@@ -4976,6 +5118,7 @@
     return s;
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <>
 const wstring&
 __time_get_c_storage<wchar_t>::__r() const
@@ -4983,6 +5126,7 @@
     static wstring s(L"%I:%M:%S %p");
     return s;
 }
+#endif
 
 // time_get_byname
 
@@ -5161,6 +5305,7 @@
 #pragma clang diagnostic ignored "-Wmissing-braces"
 #endif
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <>
 wstring
 __time_get_storage<wchar_t>::__analyze(char fmt, const ctype<wchar_t>& ct)
@@ -5310,6 +5455,7 @@
     }
     return result;
 }
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 template <>
 void
@@ -5348,6 +5494,7 @@
     __X_ = __analyze('X', ct);
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <>
 void
 __time_get_storage<wchar_t>::init(const ctype<wchar_t>& ct)
@@ -5423,6 +5570,7 @@
     __x_ = __analyze('x', ct);
     __X_ = __analyze('X', ct);
 }
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 template <class CharT>
 struct _LIBCPP_HIDDEN __time_get_temp
@@ -5450,6 +5598,7 @@
     init(ct);
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <>
 __time_get_storage<wchar_t>::__time_get_storage(const char* __nm)
     : __time_get(__nm)
@@ -5465,6 +5614,7 @@
     const __time_get_temp<wchar_t> ct(__nm);
     init(ct);
 }
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 template <>
 time_base::dateorder
@@ -5553,6 +5703,7 @@
     return time_base::no_order;
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <>
 time_base::dateorder
 __time_get_storage<wchar_t>::__do_date_order() const
@@ -5639,6 +5790,7 @@
     }
     return time_base::no_order;
 }
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 // time_put
 
@@ -5675,6 +5827,7 @@
     __ne = __nb + n;
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 void
 __time_put::__do_put(wchar_t* __wb, wchar_t*& __we, const tm* __tm,
                      char __fmt, char __mod) const
@@ -5689,6 +5842,7 @@
         __throw_runtime_error("locale not supported");
     __we = __wb + j;
 }
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 // moneypunct_byname
 
@@ -6168,6 +6322,7 @@
 #endif // !_LIBCPP_MSVCRT
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template<>
 void
 moneypunct_byname<wchar_t, false>::init(const char* nm)
@@ -6315,6 +6470,7 @@
                lc->int_n_sign_posn, L' ');
 #endif // !_LIBCPP_MSVCRT
 }
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 void __do_nothing(void*) {}
 
@@ -6328,63 +6484,63 @@
 #endif
 }
 
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS collate<char>;
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS collate<wchar_t>;
+                           template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS collate<char>;
+_LIBCPP_IF_WIDE_CHARACTERS(template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS collate<wchar_t>;)
 
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS num_get<char>;
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS num_get<wchar_t>;
+                           template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS num_get<char>;
+_LIBCPP_IF_WIDE_CHARACTERS(template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS num_get<wchar_t>;)
 
-template struct _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS __num_get<char>;
-template struct _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS __num_get<wchar_t>;
+                           template struct _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS __num_get<char>;
+_LIBCPP_IF_WIDE_CHARACTERS(template struct _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS __num_get<wchar_t>;)
 
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS num_put<char>;
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS num_put<wchar_t>;
+                           template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS num_put<char>;
+_LIBCPP_IF_WIDE_CHARACTERS(template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS num_put<wchar_t>;)
 
-template struct _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS __num_put<char>;
-template struct _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS __num_put<wchar_t>;
+                           template struct _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS __num_put<char>;
+_LIBCPP_IF_WIDE_CHARACTERS(template struct _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS __num_put<wchar_t>;)
 
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS time_get<char>;
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS time_get<wchar_t>;
+                           template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS time_get<char>;
+_LIBCPP_IF_WIDE_CHARACTERS(template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS time_get<wchar_t>;)
 
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS time_get_byname<char>;
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS time_get_byname<wchar_t>;
+                           template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS time_get_byname<char>;
+_LIBCPP_IF_WIDE_CHARACTERS(template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS time_get_byname<wchar_t>;)
 
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS time_put<char>;
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS time_put<wchar_t>;
+                           template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS time_put<char>;
+_LIBCPP_IF_WIDE_CHARACTERS(template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS time_put<wchar_t>;)
 
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS time_put_byname<char>;
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS time_put_byname<wchar_t>;
+                           template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS time_put_byname<char>;
+_LIBCPP_IF_WIDE_CHARACTERS(template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS time_put_byname<wchar_t>;)
 
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS moneypunct<char, false>;
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS moneypunct<char, true>;
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS moneypunct<wchar_t, false>;
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS moneypunct<wchar_t, true>;
+                           template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS moneypunct<char, false>;
+                           template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS moneypunct<char, true>;
+_LIBCPP_IF_WIDE_CHARACTERS(template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS moneypunct<wchar_t, false>;)
+_LIBCPP_IF_WIDE_CHARACTERS(template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS moneypunct<wchar_t, true>;)
 
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS moneypunct_byname<char, false>;
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS moneypunct_byname<char, true>;
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS moneypunct_byname<wchar_t, false>;
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS moneypunct_byname<wchar_t, true>;
+                           template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS moneypunct_byname<char, false>;
+                           template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS moneypunct_byname<char, true>;
+_LIBCPP_IF_WIDE_CHARACTERS(template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS moneypunct_byname<wchar_t, false>;)
+_LIBCPP_IF_WIDE_CHARACTERS(template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS moneypunct_byname<wchar_t, true>;)
 
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS money_get<char>;
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS money_get<wchar_t>;
+                           template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS money_get<char>;
+_LIBCPP_IF_WIDE_CHARACTERS(template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS money_get<wchar_t>;)
 
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS __money_get<char>;
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS __money_get<wchar_t>;
+                           template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS __money_get<char>;
+_LIBCPP_IF_WIDE_CHARACTERS(template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS __money_get<wchar_t>;)
 
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS money_put<char>;
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS money_put<wchar_t>;
+                           template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS money_put<char>;
+_LIBCPP_IF_WIDE_CHARACTERS(template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS money_put<wchar_t>;)
 
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS __money_put<char>;
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS __money_put<wchar_t>;
+                           template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS __money_put<char>;
+_LIBCPP_IF_WIDE_CHARACTERS(template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS __money_put<wchar_t>;)
 
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS messages<char>;
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS messages<wchar_t>;
+                           template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS messages<char>;
+_LIBCPP_IF_WIDE_CHARACTERS(template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS messages<wchar_t>;)
 
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS messages_byname<char>;
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS messages_byname<wchar_t>;
+                           template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS messages_byname<char>;
+_LIBCPP_IF_WIDE_CHARACTERS(template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS messages_byname<wchar_t>;)
 
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS codecvt_byname<char, char, mbstate_t>;
-template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS codecvt_byname<wchar_t, char, mbstate_t>;
+                           template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS codecvt_byname<char, char, mbstate_t>;
+_LIBCPP_IF_WIDE_CHARACTERS(template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS codecvt_byname<wchar_t, char, mbstate_t>;)
 template class _LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS codecvt_byname<char16_t, char, mbstate_t>;
 template class _LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS codecvt_byname<char32_t, char, mbstate_t>;
 #ifndef _LIBCPP_HAS_NO_CHAR8_T
diff --git a/src/string.cpp b/src/string.cpp
index 012b2ea..c8dae34 100644
--- a/src/string.cpp
+++ b/src/string.cpp
@@ -9,13 +9,16 @@
 #include "string"
 #include "charconv"
 #include "cstdlib"
-#include "cwchar"
 #include "cerrno"
 #include "limits"
 #include "stdexcept"
 #include <stdio.h>
 #include "__debug"
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+#   include "cwchar"
+#endif
+
 _LIBCPP_BEGIN_NAMESPACE_STD
 
 void __basic_string_common<true>::__throw_length_error() const {
@@ -28,11 +31,15 @@
 
 #define _LIBCPP_EXTERN_TEMPLATE_DEFINE(...) template __VA_ARGS__;
 #ifdef _LIBCPP_ABI_STRING_OPTIMIZED_EXTERNAL_INSTANTIATION
-_LIBCPP_STRING_UNSTABLE_EXTERN_TEMPLATE_LIST(_LIBCPP_EXTERN_TEMPLATE_DEFINE, char)
-_LIBCPP_STRING_UNSTABLE_EXTERN_TEMPLATE_LIST(_LIBCPP_EXTERN_TEMPLATE_DEFINE, wchar_t)
+    _LIBCPP_STRING_UNSTABLE_EXTERN_TEMPLATE_LIST(_LIBCPP_EXTERN_TEMPLATE_DEFINE, char)
+#   ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+        _LIBCPP_STRING_UNSTABLE_EXTERN_TEMPLATE_LIST(_LIBCPP_EXTERN_TEMPLATE_DEFINE, wchar_t)
+#   endif
 #else
-_LIBCPP_STRING_V1_EXTERN_TEMPLATE_LIST(_LIBCPP_EXTERN_TEMPLATE_DEFINE, char)
-_LIBCPP_STRING_V1_EXTERN_TEMPLATE_LIST(_LIBCPP_EXTERN_TEMPLATE_DEFINE, wchar_t)
+    _LIBCPP_STRING_V1_EXTERN_TEMPLATE_LIST(_LIBCPP_EXTERN_TEMPLATE_DEFINE, char)
+#   ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+        _LIBCPP_STRING_V1_EXTERN_TEMPLATE_LIST(_LIBCPP_EXTERN_TEMPLATE_DEFINE, wchar_t)
+#   endif
 #endif
 #undef _LIBCPP_EXTERN_TEMPLATE_DEFINE
 
@@ -137,6 +144,7 @@
     return as_integer_helper<unsigned long long>( func, s, idx, base, strtoull );
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 // wstring
 template<>
 inline
@@ -181,6 +189,7 @@
 {
     return as_integer_helper<unsigned long long>( func, s, idx, base, wcstoull );
 }
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 // as_float
 
@@ -232,6 +241,7 @@
     return as_float_helper<long double>( func, s, idx, strtold );
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template<>
 inline
 float
@@ -255,6 +265,7 @@
 {
     return as_float_helper<long double>( func, s, idx, wcstold );
 }
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 }  // unnamed namespace
 
@@ -264,11 +275,13 @@
     return as_integer<int>( "stoi", str, idx, base );
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 int
 stoi(const wstring& str, size_t* idx, int base)
 {
     return as_integer<int>( "stoi", str, idx, base );
 }
+#endif
 
 long
 stol(const string& str, size_t* idx, int base)
@@ -276,11 +289,13 @@
     return as_integer<long>( "stol", str, idx, base );
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 long
 stol(const wstring& str, size_t* idx, int base)
 {
     return as_integer<long>( "stol", str, idx, base );
 }
+#endif
 
 unsigned long
 stoul(const string& str, size_t* idx, int base)
@@ -288,11 +303,13 @@
     return as_integer<unsigned long>( "stoul", str, idx, base );
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 unsigned long
 stoul(const wstring& str, size_t* idx, int base)
 {
     return as_integer<unsigned long>( "stoul", str, idx, base );
 }
+#endif
 
 long long
 stoll(const string& str, size_t* idx, int base)
@@ -300,11 +317,13 @@
     return as_integer<long long>( "stoll", str, idx, base );
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 long long
 stoll(const wstring& str, size_t* idx, int base)
 {
     return as_integer<long long>( "stoll", str, idx, base );
 }
+#endif
 
 unsigned long long
 stoull(const string& str, size_t* idx, int base)
@@ -312,11 +331,13 @@
     return as_integer<unsigned long long>( "stoull", str, idx, base );
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 unsigned long long
 stoull(const wstring& str, size_t* idx, int base)
 {
     return as_integer<unsigned long long>( "stoull", str, idx, base );
 }
+#endif
 
 float
 stof(const string& str, size_t* idx)
@@ -324,11 +345,13 @@
     return as_float<float>( "stof", str, idx );
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 float
 stof(const wstring& str, size_t* idx)
 {
     return as_float<float>( "stof", str, idx );
 }
+#endif
 
 double
 stod(const string& str, size_t* idx)
@@ -336,11 +359,13 @@
     return as_float<double>( "stod", str, idx );
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 double
 stod(const wstring& str, size_t* idx)
 {
     return as_float<double>( "stod", str, idx );
 }
+#endif
 
 long double
 stold(const string& str, size_t* idx)
@@ -348,11 +373,13 @@
     return as_float<long double>( "stold", str, idx );
 }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 long double
 stold(const wstring& str, size_t* idx)
 {
     return as_float<long double>( "stold", str, idx );
 }
+#endif
 
 // to_string
 
@@ -403,6 +430,7 @@
     }
 };
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 template <>
 struct initial_string<wstring>
 {
@@ -427,6 +455,7 @@
     return static_cast<int (__cdecl*)(wchar_t* __restrict, size_t, const wchar_t*__restrict, ...)>(_snwprintf);
 #endif
 }
+#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
 
 template <typename S, typename V>
 S i_to_string(V v)
@@ -450,20 +479,23 @@
 string  to_string (unsigned long val)      { return i_to_string< string>(val); }
 string  to_string (unsigned long long val) { return i_to_string< string>(val); }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 wstring to_wstring(int val)                { return i_to_string<wstring>(val); }
 wstring to_wstring(long val)               { return i_to_string<wstring>(val); }
 wstring to_wstring(long long val)          { return i_to_string<wstring>(val); }
 wstring to_wstring(unsigned val)           { return i_to_string<wstring>(val); }
 wstring to_wstring(unsigned long val)      { return i_to_string<wstring>(val); }
 wstring to_wstring(unsigned long long val) { return i_to_string<wstring>(val); }
-
+#endif
 
 string  to_string (float val)       { return as_string(snprintf,       initial_string< string>()(),   "%f", val); }
 string  to_string (double val)      { return as_string(snprintf,       initial_string< string>()(),   "%f", val); }
 string  to_string (long double val) { return as_string(snprintf,       initial_string< string>()(),  "%Lf", val); }
 
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 wstring to_wstring(float val)       { return as_string(get_swprintf(), initial_string<wstring>()(),  L"%f", val); }
 wstring to_wstring(double val)      { return as_string(get_swprintf(), initial_string<wstring>()(),  L"%f", val); }
 wstring to_wstring(long double val) { return as_string(get_swprintf(), initial_string<wstring>()(), L"%Lf", val); }
+#endif
 
 _LIBCPP_END_NAMESPACE_STD
diff --git a/test/libcxx/atomics/atomics.align/align.pass.cpp b/test/libcxx/atomics/atomics.align/align.pass.cpp
index 3735bb5..2e5a9c1 100644
--- a/test/libcxx/atomics/atomics.align/align.pass.cpp
+++ b/test/libcxx/atomics/atomics.align/align.pass.cpp
@@ -65,7 +65,9 @@
   CHECK_ALIGNMENT(unsigned char);
   CHECK_ALIGNMENT(char16_t);
   CHECK_ALIGNMENT(char32_t);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   CHECK_ALIGNMENT(wchar_t);
+#endif
   CHECK_ALIGNMENT(short);
   CHECK_ALIGNMENT(unsigned short);
   CHECK_ALIGNMENT(int);
diff --git a/test/libcxx/depr/depr.c.headers/extern_c.pass.cpp b/test/libcxx/depr/depr.c.headers/extern_c.pass.cpp
index acfcc90..a4a05e6 100644
--- a/test/libcxx/depr/depr.c.headers/extern_c.pass.cpp
+++ b/test/libcxx/depr/depr.c.headers/extern_c.pass.cpp
@@ -39,8 +39,10 @@
 // tgmath.h is not supported in extern "C".
 #include <time.h>
 // FIXME: #include <uchar.h>
-#include <wchar.h>
-#include <wctype.h>
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+#   include <wchar.h>
+#   include <wctype.h>
+#endif
 }
 
 int main(int, char**) {
diff --git a/test/libcxx/diagnostics/detail.headers/mbstate_t.h.module.verify.cpp b/test/libcxx/diagnostics/detail.headers/mbstate_t.h.module.verify.cpp
new file mode 100644
index 0000000..a656832
--- /dev/null
+++ b/test/libcxx/diagnostics/detail.headers/mbstate_t.h.module.verify.cpp
@@ -0,0 +1,15 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+// REQUIRES: modules-build
+
+// WARNING: This test was generated by 'generate_private_header_tests.py'
+// and should not be edited manually.
+
+// expected-error@*:* {{use of private header from outside its module: '__mbstate_t.h'}}
+#include <__mbstate_t.h>
diff --git a/test/libcxx/double_include.sh.cpp b/test/libcxx/double_include.sh.cpp
index f18fc89..05286fb 100644
--- a/test/libcxx/double_include.sh.cpp
+++ b/test/libcxx/double_include.sh.cpp
@@ -74,8 +74,12 @@
 #include <ctgmath>
 #include <ctime>
 #include <ctype.h>
-#include <cwchar>
-#include <cwctype>
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+#    include <cwchar>
+#endif
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+#    include <cwctype>
+#endif
 #include <deque>
 #include <errno.h>
 #include <exception>
@@ -191,8 +195,12 @@
 #include <variant>
 #include <vector>
 #include <version>
-#include <wchar.h>
-#include <wctype.h>
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+#    include <wchar.h>
+#endif
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+#    include <wctype.h>
+#endif
 
 // experimental headers
 #if __cplusplus >= 201103L
diff --git a/test/libcxx/include_as_c.sh.cpp b/test/libcxx/include_as_c.sh.cpp
index 7dc3753..a3e5d53 100644
--- a/test/libcxx/include_as_c.sh.cpp
+++ b/test/libcxx/include_as_c.sh.cpp
@@ -45,8 +45,10 @@
 #ifndef _MSC_VER
 #    include <tgmath.h>
 #endif
-#include <wchar.h>
-#include <wctype.h>
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+#   include <wchar.h>
+#   include <wctype.h>
+#endif
 
 int main(int argc, char **argv) {
   (void)argc;
diff --git a/test/libcxx/input.output/filesystems/class.path/path.member/path.native.obs/string_alloc.pass.cpp b/test/libcxx/input.output/filesystems/class.path/path.member/path.native.obs/string_alloc.pass.cpp
index e38000e..87f9766 100644
--- a/test/libcxx/input.output/filesystems/class.path/path.member/path.native.obs/string_alloc.pass.cpp
+++ b/test/libcxx/input.output/filesystems/class.path/path.member/path.native.obs/string_alloc.pass.cpp
@@ -146,7 +146,9 @@
   {
     auto const& S = shortString;
     doShortStringTest<char>(S);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     doShortStringTest<wchar_t>(S);
+#endif
     doShortStringTest<char16_t>(S);
     doShortStringTest<char32_t>(S);
 #if TEST_STD_VER > 17 && defined(__cpp_lib_char8_t)
@@ -156,7 +158,9 @@
   {
     auto const& S = longString;
     doLongStringTest<char>(S);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     doLongStringTest<wchar_t>(S);
+#endif
     doLongStringTest<char16_t>(S);
     doLongStringTest<char32_t>(S);
 #if TEST_STD_VER > 17 && defined(__cpp_lib_char8_t)
diff --git a/test/libcxx/input.output/filesystems/class.path/path.req/is_pathable.pass.cpp b/test/libcxx/input.output/filesystems/class.path/path.req/is_pathable.pass.cpp
index 7e15864..2dbc016 100644
--- a/test/libcxx/input.output/filesystems/class.path/path.req/is_pathable.pass.cpp
+++ b/test/libcxx/input.output/filesystems/class.path/path.req/is_pathable.pass.cpp
@@ -97,7 +97,9 @@
 
 int main(int, char**) {
   MakeTestType<char>::Test();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   MakeTestType<wchar_t>::Test();
+#endif
   MakeTestType<char16_t>::Test();
   MakeTestType<char32_t>::Test();
 
diff --git a/test/libcxx/input.output/iostream.format/input.streams/traits_mismatch.fail.cpp b/test/libcxx/input.output/iostream.format/input.streams/traits_mismatch.fail.cpp
index 1013198..faa693a 100644
--- a/test/libcxx/input.output/iostream.format/input.streams/traits_mismatch.fail.cpp
+++ b/test/libcxx/input.output/iostream.format/input.streams/traits_mismatch.fail.cpp
@@ -13,6 +13,8 @@
 
 // The char type of the stream and the char_type of the traits have to match
 
+// UNSUPPORTED: libcpp-has-no-wide-characters
+
 #include <istream>
 #include <type_traits>
 #include <cassert>
diff --git a/test/libcxx/input.output/iostream.format/output.streams/traits_mismatch.fail.cpp b/test/libcxx/input.output/iostream.format/output.streams/traits_mismatch.fail.cpp
index dba4c92..bf974d3 100644
--- a/test/libcxx/input.output/iostream.format/output.streams/traits_mismatch.fail.cpp
+++ b/test/libcxx/input.output/iostream.format/output.streams/traits_mismatch.fail.cpp
@@ -13,6 +13,8 @@
 
 // The char type of the stream and the char_type of the traits have to match
 
+// UNSUPPORTED: libcpp-has-no-wide-characters
+
 #include <ostream>
 #include <type_traits>
 #include <cassert>
diff --git a/test/libcxx/input.output/string.streams/traits_mismatch.fail.cpp b/test/libcxx/input.output/string.streams/traits_mismatch.fail.cpp
index 60b95a7..91d992d 100644
--- a/test/libcxx/input.output/string.streams/traits_mismatch.fail.cpp
+++ b/test/libcxx/input.output/string.streams/traits_mismatch.fail.cpp
@@ -14,6 +14,8 @@
 //
 // The char type of the stream and the char_type of the traits have to match
 
+// UNSUPPORTED: libcpp-has-no-wide-characters
+
 #include <sstream>
 
 int main(int, char**)
diff --git a/test/libcxx/iterators/contiguous_iterators.pass.cpp b/test/libcxx/iterators/contiguous_iterators.pass.cpp
index 71407ba..dcb573c 100644
--- a/test/libcxx/iterators/contiguous_iterators.pass.cpp
+++ b/test/libcxx/iterators/contiguous_iterators.pass.cpp
@@ -225,10 +225,12 @@
     static_assert(( std::__is_cpp17_contiguous_iterator<std::string::const_iterator>        ::value), "");
     static_assert((!std::__is_cpp17_contiguous_iterator<std::string::reverse_iterator>      ::value), "");
     static_assert((!std::__is_cpp17_contiguous_iterator<std::string::const_reverse_iterator>::value), "");
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     static_assert(( std::__is_cpp17_contiguous_iterator<std::wstring::iterator>              ::value), "");
     static_assert(( std::__is_cpp17_contiguous_iterator<std::wstring::const_iterator>        ::value), "");
     static_assert((!std::__is_cpp17_contiguous_iterator<std::wstring::reverse_iterator>      ::value), "");
     static_assert((!std::__is_cpp17_contiguous_iterator<std::wstring::const_reverse_iterator>::value), "");
+#endif
 
 //  deque is random-access but not contiguous
     static_assert((!std::__is_cpp17_contiguous_iterator<std::deque<int>::iterator>                   ::value), "");
diff --git a/test/libcxx/iterators/failed.pass.cpp b/test/libcxx/iterators/failed.pass.cpp
index c47101e..afb4453 100644
--- a/test/libcxx/iterators/failed.pass.cpp
+++ b/test/libcxx/iterators/failed.pass.cpp
@@ -25,10 +25,12 @@
         std::ostreambuf_iterator<char> i(nullptr);
         assert(i.failed());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::ostreambuf_iterator<wchar_t> i(nullptr);
         assert(i.failed());
     }
+#endif
 
   return 0;
 }
diff --git a/test/libcxx/iterators/iterator.requirements/iterator.concepts/integer_like.compile.pass.cpp b/test/libcxx/iterators/iterator.requirements/iterator.concepts/integer_like.compile.pass.cpp
index c514f6a..fa400d0 100644
--- a/test/libcxx/iterators/iterator.requirements/iterator.concepts/integer_like.compile.pass.cpp
+++ b/test/libcxx/iterators/iterator.requirements/iterator.concepts/integer_like.compile.pass.cpp
@@ -25,7 +25,9 @@
 static_assert(std::__integer_like<long long>);
 static_assert(std::__integer_like<unsigned long long>);
 static_assert(std::__integer_like<char>);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 static_assert(std::__integer_like<wchar_t>);
+#endif
 static_assert(std::__integer_like<char8_t>);
 static_assert(std::__integer_like<char16_t>);
 static_assert(std::__integer_like<char32_t>);
@@ -42,7 +44,9 @@
 static_assert(!std::__signed_integer_like<unsigned long>);
 static_assert(!std::__signed_integer_like<unsigned long long>);
 static_assert(std::__signed_integer_like<char> == std::signed_integral<char>);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 static_assert(std::__signed_integer_like<wchar_t> == std::signed_integral<wchar_t>);
+#endif
 static_assert(std::__signed_integer_like<char8_t> == std::signed_integral<char8_t>);
 static_assert(std::__signed_integer_like<char16_t> == std::signed_integral<char16_t>);
 static_assert(std::__signed_integer_like<char32_t> == std::signed_integral<char32_t>);
diff --git a/test/libcxx/localization/locales/locale.convenience/conversions/conversions.string/ctor_move.pass.cpp b/test/libcxx/localization/locales/locale.convenience/conversions/conversions.string/ctor_move.pass.cpp
index dc7979d..8816227 100644
--- a/test/libcxx/localization/locales/locale.convenience/conversions/conversions.string/ctor_move.pass.cpp
+++ b/test/libcxx/localization/locales/locale.convenience/conversions/conversions.string/ctor_move.pass.cpp
@@ -9,6 +9,8 @@
 // 'do_bytes' throws a std::range_error unexpectedly
 // XFAIL: LIBCXX-WINDOWS-FIXME, powerpc-ibm-aix
 
+// XFAIL: libcpp-has-no-wide-characters
+
 // UNSUPPORTED: c++03
 
 // <locale>
diff --git a/test/libcxx/min_max_macros.compile.pass.cpp b/test/libcxx/min_max_macros.compile.pass.cpp
index 18702d6..d1e2b90 100644
--- a/test/libcxx/min_max_macros.compile.pass.cpp
+++ b/test/libcxx/min_max_macros.compile.pass.cpp
@@ -112,10 +112,14 @@
 TEST_MACROS();
 #include <ctype.h>
 TEST_MACROS();
-#include <cwchar>
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+#    include <cwchar>
 TEST_MACROS();
-#include <cwctype>
+#endif
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+#    include <cwctype>
 TEST_MACROS();
+#endif
 #include <deque>
 TEST_MACROS();
 #include <errno.h>
@@ -304,10 +308,14 @@
 TEST_MACROS();
 #include <version>
 TEST_MACROS();
-#include <wchar.h>
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+#    include <wchar.h>
 TEST_MACROS();
-#include <wctype.h>
+#endif
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+#    include <wctype.h>
 TEST_MACROS();
+#endif
 
 // experimental headers
 #if __cplusplus >= 201103L
diff --git a/test/libcxx/no_assert_include.compile.pass.cpp b/test/libcxx/no_assert_include.compile.pass.cpp
index 8b5581f..9c80b40 100644
--- a/test/libcxx/no_assert_include.compile.pass.cpp
+++ b/test/libcxx/no_assert_include.compile.pass.cpp
@@ -69,8 +69,12 @@
 #include <ctgmath>
 #include <ctime>
 #include <ctype.h>
-#include <cwchar>
-#include <cwctype>
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+#    include <cwchar>
+#endif
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+#    include <cwctype>
+#endif
 #include <deque>
 #include <errno.h>
 #include <exception>
@@ -186,8 +190,12 @@
 #include <variant>
 #include <vector>
 #include <version>
-#include <wchar.h>
-#include <wctype.h>
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+#    include <wchar.h>
+#endif
+#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
+#    include <wctype.h>
+#endif
 
 // experimental headers
 #if __cplusplus >= 201103L
diff --git a/test/libcxx/strings/c.strings/version_cwchar.pass.cpp b/test/libcxx/strings/c.strings/version_cwchar.pass.cpp
index 1e2eff5..571bdc6 100644
--- a/test/libcxx/strings/c.strings/version_cwchar.pass.cpp
+++ b/test/libcxx/strings/c.strings/version_cwchar.pass.cpp
@@ -6,6 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
+// XFAIL: libcpp-has-no-wide-characters
+
 // <cwchar>
 
 #include <cwchar>
diff --git a/test/libcxx/strings/c.strings/version_cwctype.pass.cpp b/test/libcxx/strings/c.strings/version_cwctype.pass.cpp
index d821980..453ceb1 100644
--- a/test/libcxx/strings/c.strings/version_cwctype.pass.cpp
+++ b/test/libcxx/strings/c.strings/version_cwctype.pass.cpp
@@ -6,6 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
+// XFAIL: libcpp-has-no-wide-characters
+
 // <cwctype>
 
 #include <cwctype>
diff --git a/test/libcxx/type_traits/convert_to_integral.pass.cpp b/test/libcxx/type_traits/convert_to_integral.pass.cpp
index f7152d2..d8fce1e 100644
--- a/test/libcxx/type_traits/convert_to_integral.pass.cpp
+++ b/test/libcxx/type_traits/convert_to_integral.pass.cpp
@@ -87,7 +87,9 @@
   check_integral_types<char, int>();
   check_integral_types<signed char, int>();
   check_integral_types<unsigned char, int>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   check_integral_types<wchar_t, decltype(((wchar_t)1) + 1)>();
+#endif
   check_integral_types<char16_t, int>();
   // On some platforms, unsigned int and long are the same size.  These
   // platforms have a choice of making uint32_t an int or a long.  However
diff --git a/test/libcxx/utilities/format/format.arguments/format.arg/visit_format_arg.pass.cpp b/test/libcxx/utilities/format/format.arguments/format.arg/visit_format_arg.pass.cpp
index 03c177b..b6e34d7 100644
--- a/test/libcxx/utilities/format/format.arguments/format.arg/visit_format_arg.pass.cpp
+++ b/test/libcxx/utilities/format/format.arguments/format.arg/visit_format_arg.pass.cpp
@@ -350,7 +350,9 @@
 
 void test() {
   test<char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   test<wchar_t>();
+#endif
 }
 
 int main(int, char**) {
diff --git a/test/libcxx/utilities/format/format.arguments/format.args/get.pass.cpp b/test/libcxx/utilities/format/format.arguments/format.args/get.pass.cpp
index 37116c5..6f8035b 100644
--- a/test/libcxx/utilities/format/format.arguments/format.args/get.pass.cpp
+++ b/test/libcxx/utilities/format/format.arguments/format.args/get.pass.cpp
@@ -304,7 +304,9 @@
 
 void test() {
   test<char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   test<wchar_t>();
+#endif
 }
 
 int main(int, char**) {
diff --git a/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_bool.pass.cpp b/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_bool.pass.cpp
index c6fdbee..c32d363 100644
--- a/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_bool.pass.cpp
+++ b/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_bool.pass.cpp
@@ -430,7 +430,9 @@
 
 constexpr bool test() {
   test<char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   test<wchar_t>();
+#endif
 
   return true;
 }
@@ -440,10 +442,12 @@
   // Make sure the parsers match the expectations. The layout of the
   // subobjects is chosen to minimize the size required.
   static_assert(sizeof(Parser<char>) == 2 * sizeof(uint32_t));
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   static_assert(
       sizeof(Parser<wchar_t>) ==
       (sizeof(wchar_t) <= 2 ? 2 * sizeof(uint32_t) : 3 * sizeof(uint32_t)));
 #endif
+#endif // _WIN32
 
   test();
   static_assert(test());
diff --git a/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_char.pass.cpp b/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_char.pass.cpp
index 07c5bbb..876c7d2 100644
--- a/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_char.pass.cpp
+++ b/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_char.pass.cpp
@@ -428,7 +428,9 @@
 
 constexpr bool test() {
   test<char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   test<wchar_t>();
+#endif
 
   return true;
 }
@@ -440,10 +442,12 @@
   // Make sure the parsers match the expectations. The layout of the
   // subobjects is chosen to minimize the size required.
   static_assert(sizeof(Parser<char>) == 2 * sizeof(uint32_t));
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   static_assert(
       sizeof(Parser<wchar_t>) ==
       (sizeof(wchar_t) <= 2 ? 2 * sizeof(uint32_t) : 3 * sizeof(uint32_t)));
 #endif
+#endif // _WIN32
 
   test();
   static_assert(test());
diff --git a/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_integer.pass.cpp b/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_integer.pass.cpp
index d7c3d6a..652c2ca 100644
--- a/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_integer.pass.cpp
+++ b/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_integer.pass.cpp
@@ -323,7 +323,9 @@
 
 constexpr bool test() {
   test<char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   test<wchar_t>();
+#endif
 
   return true;
 }
@@ -333,10 +335,12 @@
   // Make sure the parsers match the expectations. The layout of the
   // subobjects is chosen to minimize the size required.
   static_assert(sizeof(Parser<char>) == 2 * sizeof(uint32_t));
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   static_assert(
       sizeof(Parser<wchar_t>) ==
       (sizeof(wchar_t) <= 2 ? 2 * sizeof(uint32_t) : 3 * sizeof(uint32_t)));
 #endif
+#endif // _WIN32
 
   test();
   static_assert(test());
diff --git a/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string.pass.cpp b/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string.pass.cpp
index 53753d0..930a6b4 100644
--- a/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string.pass.cpp
+++ b/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string.pass.cpp
@@ -351,7 +351,9 @@
 
 constexpr bool test() {
   test<char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   test<wchar_t>();
+#endif
 #ifndef _LIBCPP_HAS_NO_CHAR8_T
   test<char8_t>();
 #endif
@@ -368,10 +370,12 @@
   // Make sure the parsers match the expectations. The layout of the
   // subobjects is chosen to minimize the size required.
   LIBCPP_STATIC_ASSERT(sizeof(Parser<char>) == 3 * sizeof(uint32_t));
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   LIBCPP_STATIC_ASSERT(
       sizeof(Parser<wchar_t>) ==
       (sizeof(wchar_t) <= 2 ? 3 * sizeof(uint32_t) : 4 * sizeof(uint32_t)));
 #endif
+#endif // _WIN32
 
   test();
   static_assert(test());
diff --git a/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string_non_unicode.pass.cpp b/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string_non_unicode.pass.cpp
index 51c0826..f2d3381 100644
--- a/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string_non_unicode.pass.cpp
+++ b/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string_non_unicode.pass.cpp
@@ -91,7 +91,9 @@
 
 constexpr bool test() {
   test<char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   test<wchar_t>();
+#endif
 #ifndef _LIBCPP_HAS_NO_CHAR8_T
   test<char8_t>();
 #endif
diff --git a/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string_unicode.pass.cpp b/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string_unicode.pass.cpp
index 8109331..f6337a0 100644
--- a/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string_unicode.pass.cpp
+++ b/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string_unicode.pass.cpp
@@ -251,7 +251,9 @@
 
 constexpr bool test() {
   test<char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   test<wchar_t>();
+#endif
 #ifndef _LIBCPP_HAS_NO_CHAR8_T
   test<char8_t>();
 #endif
diff --git a/test/std/atomics/atomics.types.generic/integral.pass.cpp b/test/std/atomics/atomics.types.generic/integral.pass.cpp
index 5f23be8..b585f45 100644
--- a/test/std/atomics/atomics.types.generic/integral.pass.cpp
+++ b/test/std/atomics/atomics.types.generic/integral.pass.cpp
@@ -183,7 +183,9 @@
     test<std::atomic_char16_t, char16_t>();
     test<std::atomic_char32_t, char32_t>();
 #endif
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<std::atomic_wchar_t, wchar_t>();
+#endif
 
     test<std::atomic_int8_t,    int8_t>();
     test<std::atomic_uint8_t,  uint8_t>();
@@ -209,7 +211,9 @@
     test<volatile std::atomic_char16_t, char16_t>();
     test<volatile std::atomic_char32_t, char32_t>();
 #endif
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<volatile std::atomic_wchar_t, wchar_t>();
+#endif
 
     test<volatile std::atomic_int8_t,    int8_t>();
     test<volatile std::atomic_uint8_t,  uint8_t>();
diff --git a/test/std/atomics/atomics.types.generic/integral_typedefs.pass.cpp b/test/std/atomics/atomics.types.generic/integral_typedefs.pass.cpp
index 56e0dec..6ae1fa6 100644
--- a/test/std/atomics/atomics.types.generic/integral_typedefs.pass.cpp
+++ b/test/std/atomics/atomics.types.generic/integral_typedefs.pass.cpp
@@ -56,7 +56,9 @@
     static_assert((std::is_same<std::atomic<unsigned long>, std::atomic_ulong>::value), "");
     static_assert((std::is_same<std::atomic<long long>, std::atomic_llong>::value), "");
     static_assert((std::is_same<std::atomic<unsigned long long>, std::atomic_ullong>::value), "");
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     static_assert((std::is_same<std::atomic<wchar_t>, std::atomic_wchar_t>::value), "");
+#endif
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     static_assert((std::is_same<std::atomic<char8_t>, std::atomic_char8_t>::value), "");
 #endif
diff --git a/test/std/atomics/types.pass.cpp b/test/std/atomics/types.pass.cpp
index e3f1a43..21ff0d3 100644
--- a/test/std/atomics/types.pass.cpp
+++ b/test/std/atomics/types.pass.cpp
@@ -118,7 +118,9 @@
 #endif
     test<char16_t>           ();
     test<char32_t>           ();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<wchar_t>            ();
+#endif
 
     test<int_least8_t>   ();
     test<uint_least8_t>  ();
diff --git a/test/std/concepts/concepts.lang/concept.default.init/default_initializable.compile.pass.cpp b/test/std/concepts/concepts.lang/concept.default.init/default_initializable.compile.pass.cpp
index 930282f..57d3132 100644
--- a/test/std/concepts/concepts.lang/concept.default.init/default_initializable.compile.pass.cpp
+++ b/test/std/concepts/concepts.lang/concept.default.init/default_initializable.compile.pass.cpp
@@ -236,14 +236,18 @@
 
     // Strings
     test_true     <std::string>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test_true     <std::wstring>();
+#endif
     test_true     <std::u8string>();
     test_true     <std::u16string>();
     test_true     <std::u32string>();
 
     // String views
     test_true     <std::string_view>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test_true     <std::wstring_view>();
+#endif
     test_true     <std::u8string_view>();
     test_true     <std::u16string_view>();
     test_true     <std::u32string_view>();
diff --git a/test/std/depr/depr.c.headers/stdint_h.pass.cpp b/test/std/depr/depr.c.headers/stdint_h.pass.cpp
index 36f0ae8..37945ee 100644
--- a/test/std/depr/depr.c.headers/stdint_h.pass.cpp
+++ b/test/std/depr/depr.c.headers/stdint_h.pass.cpp
@@ -11,7 +11,6 @@
 #include <stdint.h>
 #include <cstddef>
 #include <csignal>
-#include <cwctype>
 #include <climits>
 #include <type_traits>
 #include <limits>
@@ -19,6 +18,10 @@
 
 #include "test_macros.h"
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+#   include <cwctype>
+#endif
+
 int main(int, char**)
 {
     // typedef int8_t
@@ -238,6 +241,7 @@
     // SIZE_MAX
     assert(SIZE_MAX == std::numeric_limits<size_t>::max());
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     // WCHAR_MIN
     assert(WCHAR_MIN == std::numeric_limits<wchar_t>::min());
 
@@ -249,6 +253,7 @@
 
     // WINT_MAX
     assert(WINT_MAX == std::numeric_limits<wint_t>::max());
+#endif
 
 #ifndef INT8_C
 #error INT8_C not defined
diff --git a/test/std/depr/depr.c.headers/wchar_h.pass.cpp b/test/std/depr/depr.c.headers/wchar_h.pass.cpp
index de05a2d..e5b8c2c 100644
--- a/test/std/depr/depr.c.headers/wchar_h.pass.cpp
+++ b/test/std/depr/depr.c.headers/wchar_h.pass.cpp
@@ -6,6 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
+// XFAIL: libcpp-has-no-wide-characters
+
 // <wchar.h>
 
 #include <wchar.h>
diff --git a/test/std/depr/depr.c.headers/wctype_h.pass.cpp b/test/std/depr/depr.c.headers/wctype_h.pass.cpp
index 8ec5bbd..1738c6c 100644
--- a/test/std/depr/depr.c.headers/wctype_h.pass.cpp
+++ b/test/std/depr/depr.c.headers/wctype_h.pass.cpp
@@ -6,6 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
+// XFAIL: libcpp-has-no-wide-characters
+
 // <wctype.h>
 
 #include <wctype.h>
diff --git a/test/std/experimental/iterator/ostream.joiner/ostream.joiner.cons/ostream_joiner.cons.pass.cpp b/test/std/experimental/iterator/ostream.joiner/ostream.joiner.cons/ostream_joiner.cons.pass.cpp
index 429388c..a4210d0 100644
--- a/test/std/experimental/iterator/ostream.joiner/ostream.joiner.cons/ostream_joiner.cons.pass.cpp
+++ b/test/std/experimental/iterator/ostream.joiner/ostream.joiner.cons/ostream_joiner.cons.pass.cpp
@@ -28,33 +28,40 @@
 int main(int, char**) {
     const char eight = '8';
     const std::string nine = "9";
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     const std::wstring ten = L"10";
+#endif
     const int eleven = 11;
 
-//  Narrow streams w/rvalues
+    // Narrow streams w/rvalues
     { exper::ostream_joiner<char>         oj(std::cout, '8'); }
     { exper::ostream_joiner<std::string>  oj(std::cout, std::string("9")); }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     { exper::ostream_joiner<std::wstring> oj(std::cout, std::wstring(L"10")); }
+#endif
     { exper::ostream_joiner<int>          oj(std::cout, 11); }
 
-//  Narrow streams w/lvalues
+    // Narrow streams w/lvalues
     { exper::ostream_joiner<char>         oj(std::cout, eight); }
     { exper::ostream_joiner<std::string>  oj(std::cout, nine); }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     { exper::ostream_joiner<std::wstring> oj(std::cout, ten); }
+#endif
     { exper::ostream_joiner<int>          oj(std::cout, eleven); }
 
-//  Wide streams w/rvalues
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    // Wide streams w/rvalues
     { exper::ostream_joiner<char, wchar_t>         oj(std::wcout, '8'); }
     { exper::ostream_joiner<std::string, wchar_t>  oj(std::wcout, std::string("9")); }
     { exper::ostream_joiner<std::wstring, wchar_t> oj(std::wcout, std::wstring(L"10")); }
     { exper::ostream_joiner<int, wchar_t>          oj(std::wcout, 11); }
 
-//  Wide streams w/lvalues
+    // Wide streams w/lvalues
     { exper::ostream_joiner<char, wchar_t>         oj(std::wcout, eight); }
     { exper::ostream_joiner<std::string, wchar_t>  oj(std::wcout, nine); }
     { exper::ostream_joiner<std::wstring, wchar_t> oj(std::wcout, ten); }
     { exper::ostream_joiner<int, wchar_t>          oj(std::wcout, eleven); }
-
+#endif
 
   return 0;
 }
diff --git a/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.assign.pass.cpp b/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.assign.pass.cpp
index 44604d4..2007473 100644
--- a/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.assign.pass.cpp
+++ b/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.assign.pass.cpp
@@ -85,8 +85,10 @@
     test("Z", chars, chars+10, "0Z1Z2Z3Z4Z5Z6Z7Z8Z9");
     test("z", ints,  ints+10,  "10z11z12z13z14z15z16z17z18z19");
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<char, const char *, wchar_t> ('X', chars, chars+10, L"0X1X2X3X4X5X6X7X8X9");
     test<char, const int *,  wchar_t> ('x',  ints,  ints+10, L"10x11x12x13x14x15x16x17x18x19");
+#endif
 //  test<char, const char *, char16_t>('X', chars, chars+10, u"0X1X2X3X4X5X6X7X8X9");
 //  test<char, const int *,  char16_t>('x',  ints,  ints+10, u"10x11x12x13x14x15x16x17x18x19");
 //  test<char, const char *, char32_t>('X', chars, chars+10, U"0X1X2X3X4X5X6X7X8X9");
@@ -96,6 +98,7 @@
     test(mutating_delimiter2(), chars, chars+10, "0 1!2\"3#4$5%6&7'8(9");
     }
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
     const wchar_t chars[] = L"0123456789";
     const int  ints [] = { 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 };
@@ -116,7 +119,7 @@
 
     test(mutating_delimiter(), chars, chars+10, L"0 1!2\"3#4$5%6&7'8(9");
     }
-
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.postincrement.pass.cpp b/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.postincrement.pass.cpp
index 9d9457b..774ee36 100644
--- a/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.postincrement.pass.cpp
+++ b/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.postincrement.pass.cpp
@@ -36,13 +36,17 @@
 
     { exper::ostream_joiner<char>         oj(std::cout, '8');                 test(oj); }
     { exper::ostream_joiner<std::string>  oj(std::cout, std::string("9"));    test(oj); }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     { exper::ostream_joiner<std::wstring> oj(std::cout, std::wstring(L"10")); test(oj); }
+#endif
     { exper::ostream_joiner<int>          oj(std::cout, 11);                  test(oj); }
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     { exper::ostream_joiner<char, wchar_t>         oj(std::wcout, '8');                 test(oj); }
     { exper::ostream_joiner<std::string, wchar_t>  oj(std::wcout, std::string("9"));    test(oj); }
     { exper::ostream_joiner<std::wstring, wchar_t> oj(std::wcout, std::wstring(L"10")); test(oj); }
     { exper::ostream_joiner<int, wchar_t>          oj(std::wcout, 11);                  test(oj); }
+#endif
 
   return 0;
 }
diff --git a/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.pretincrement.pass.cpp b/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.pretincrement.pass.cpp
index f03fbb0..d8929c4 100644
--- a/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.pretincrement.pass.cpp
+++ b/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.pretincrement.pass.cpp
@@ -36,13 +36,17 @@
 
     { exper::ostream_joiner<char>         oj(std::cout, '8');                 test(oj); }
     { exper::ostream_joiner<std::string>  oj(std::cout, std::string("9"));    test(oj); }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     { exper::ostream_joiner<std::wstring> oj(std::cout, std::wstring(L"10")); test(oj); }
+#endif
     { exper::ostream_joiner<int>          oj(std::cout, 11);                  test(oj); }
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     { exper::ostream_joiner<char, wchar_t>         oj(std::wcout, '8');                 test(oj); }
     { exper::ostream_joiner<std::string, wchar_t>  oj(std::wcout, std::string("9"));    test(oj); }
     { exper::ostream_joiner<std::wstring, wchar_t> oj(std::wcout, std::wstring(L"10")); test(oj); }
     { exper::ostream_joiner<int, wchar_t>          oj(std::wcout, 11);                  test(oj); }
+#endif
 
   return 0;
 }
diff --git a/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.star.pass.cpp b/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.star.pass.cpp
index 6e54879..a0804cc 100644
--- a/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.star.pass.cpp
+++ b/test/std/experimental/iterator/ostream.joiner/ostream.joiner.ops/ostream_joiner.op.star.pass.cpp
@@ -36,13 +36,17 @@
 
     { exper::ostream_joiner<char>         oj(std::cout, '8');                 test(oj); }
     { exper::ostream_joiner<std::string>  oj(std::cout, std::string("9"));    test(oj); }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     { exper::ostream_joiner<std::wstring> oj(std::cout, std::wstring(L"10")); test(oj); }
+#endif
     { exper::ostream_joiner<int>          oj(std::cout, 11);                  test(oj); }
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     { exper::ostream_joiner<char, wchar_t>         oj(std::wcout, '8');                 test(oj); }
     { exper::ostream_joiner<std::string, wchar_t>  oj(std::wcout, std::string("9"));    test(oj); }
     { exper::ostream_joiner<std::wstring, wchar_t> oj(std::wcout, std::wstring(L"10")); test(oj); }
     { exper::ostream_joiner<int, wchar_t>          oj(std::wcout, 11);                  test(oj); }
+#endif
 
   return 0;
 }
diff --git a/test/std/experimental/memory/memory.resource.aliases/header_regex_synop.pass.cpp b/test/std/experimental/memory/memory.resource.aliases/header_regex_synop.pass.cpp
index d407378..7d5c263 100644
--- a/test/std/experimental/memory/memory.resource.aliases/header_regex_synop.pass.cpp
+++ b/test/std/experimental/memory/memory.resource.aliases/header_regex_synop.pass.cpp
@@ -45,9 +45,11 @@
 {
     {
         test_match_result_typedef<const char*, pmr::cmatch>();
-        test_match_result_typedef<const wchar_t*, pmr::wcmatch>();
         test_match_result_typedef<pmr::string::const_iterator, pmr::smatch>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+        test_match_result_typedef<const wchar_t*, pmr::wcmatch>();
         test_match_result_typedef<pmr::wstring::const_iterator, pmr::wsmatch>();
+#endif
     }
     {
         // Check that std::match_results has been included and is complete.
diff --git a/test/std/experimental/memory/memory.resource.aliases/header_string_synop.pass.cpp b/test/std/experimental/memory/memory.resource.aliases/header_string_synop.pass.cpp
index 326ca78..95cb8e5 100644
--- a/test/std/experimental/memory/memory.resource.aliases/header_string_synop.pass.cpp
+++ b/test/std/experimental/memory/memory.resource.aliases/header_string_synop.pass.cpp
@@ -54,13 +54,17 @@
 {
     {
         test_string_typedef<char,     pmr::string>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         test_string_typedef<wchar_t,  pmr::wstring>();
+#endif
         test_string_typedef<char16_t, pmr::u16string>();
         test_string_typedef<char32_t, pmr::u32string>();
     }
     {
         test_basic_string_alias<char,    constexpr_char_traits<char>>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         test_basic_string_alias<wchar_t, constexpr_char_traits<wchar_t>>();
+#endif
         test_basic_string_alias<char16_t, constexpr_char_traits<char16_t>>();
         test_basic_string_alias<char32_t, constexpr_char_traits<char32_t>>();
     }
diff --git a/test/std/input.output/file.streams/c.files/cinttypes.pass.cpp b/test/std/input.output/file.streams/c.files/cinttypes.pass.cpp
index 5a49bb8..6b76efd 100644
--- a/test/std/input.output/file.streams/c.files/cinttypes.pass.cpp
+++ b/test/std/input.output/file.streams/c.files/cinttypes.pass.cpp
@@ -927,8 +927,10 @@
     static_assert((std::is_same<decltype(std::imaxdiv(i, i)), std::imaxdiv_t>::value), "");
     static_assert((std::is_same<decltype(std::strtoimax("", (char**)0, 0)), std::intmax_t>::value), "");
     static_assert((std::is_same<decltype(std::strtoumax("", (char**)0, 0)), std::uintmax_t>::value), "");
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     static_assert((std::is_same<decltype(std::wcstoimax(L"", (wchar_t**)0, 0)), std::intmax_t>::value), "");
     static_assert((std::is_same<decltype(std::wcstoumax(L"", (wchar_t**)0, 0)), std::uintmax_t>::value), "");
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/filebuf.assign/member_swap.pass.cpp b/test/std/input.output/file.streams/fstreams/filebuf.assign/member_swap.pass.cpp
index c4e67c1..6febc69 100644
--- a/test/std/input.output/file.streams/fstreams/filebuf.assign/member_swap.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/filebuf.assign/member_swap.pass.cpp
@@ -36,6 +36,8 @@
         assert(f2.sgetc() == '2');
     }
     std::remove(temp.c_str());
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wfilebuf f;
         assert(f.open(temp.c_str(), std::ios_base::out | std::ios_base::in
@@ -51,6 +53,7 @@
         assert(f2.sgetc() == L'2');
     }
     std::remove(temp.c_str());
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/filebuf.assign/move_assign.pass.cpp b/test/std/input.output/file.streams/fstreams/filebuf.assign/move_assign.pass.cpp
index 173c9d1..863fd3e 100644
--- a/test/std/input.output/file.streams/fstreams/filebuf.assign/move_assign.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/filebuf.assign/move_assign.pass.cpp
@@ -36,6 +36,8 @@
         assert(f2.sgetc() == '2');
     }
     std::remove(temp.c_str());
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wfilebuf f;
         assert(f.open(temp.c_str(), std::ios_base::out | std::ios_base::in
@@ -51,6 +53,7 @@
         assert(f2.sgetc() == L'2');
     }
     std::remove(temp.c_str());
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/filebuf.assign/nonmember_swap.pass.cpp b/test/std/input.output/file.streams/fstreams/filebuf.assign/nonmember_swap.pass.cpp
index 4b7ec47..4ae3fc2 100644
--- a/test/std/input.output/file.streams/fstreams/filebuf.assign/nonmember_swap.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/filebuf.assign/nonmember_swap.pass.cpp
@@ -38,6 +38,8 @@
         assert(f2.sgetc() == '2');
     }
     std::remove(temp.c_str());
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wfilebuf f;
         assert(f.open(temp.c_str(), std::ios_base::out | std::ios_base::in
@@ -53,6 +55,7 @@
         assert(f2.sgetc() == L'2');
     }
     std::remove(temp.c_str());
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/filebuf.cons/default.pass.cpp b/test/std/input.output/file.streams/fstreams/filebuf.cons/default.pass.cpp
index 5808690..f012fe7 100644
--- a/test/std/input.output/file.streams/fstreams/filebuf.cons/default.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/filebuf.cons/default.pass.cpp
@@ -24,10 +24,12 @@
         std::filebuf f;
         assert(!f.is_open());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wfilebuf f;
         assert(!f.is_open());
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/filebuf.cons/move.pass.cpp b/test/std/input.output/file.streams/fstreams/filebuf.cons/move.pass.cpp
index 38aba56..f618e43 100644
--- a/test/std/input.output/file.streams/fstreams/filebuf.cons/move.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/filebuf.cons/move.pass.cpp
@@ -35,6 +35,8 @@
         assert(f2.sgetc() == '2');
     }
     std::remove(temp.c_str());
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wfilebuf f;
         assert(f.open(temp.c_str(), std::ios_base::out | std::ios_base::in
@@ -49,6 +51,7 @@
         assert(f2.sgetc() == L'2');
     }
     std::remove(temp.c_str());
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/filebuf.members/open_path.pass.cpp b/test/std/input.output/file.streams/fstreams/filebuf.members/open_path.pass.cpp
index cf85296..81749cf 100644
--- a/test/std/input.output/file.streams/fstreams/filebuf.members/open_path.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/filebuf.members/open_path.pass.cpp
@@ -42,6 +42,8 @@
     assert(f.sbumpc() == '3');
   }
   std::remove(p.string().c_str());
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   {
     std::wfilebuf f;
     assert(f.open(p, std::ios_base::out) != 0);
@@ -56,7 +58,8 @@
     assert(f.sbumpc() == L'2');
     assert(f.sbumpc() == L'3');
   }
-  remove(p.string().c_str());
+  std::remove(p.string().c_str());
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/filebuf.members/open_pointer.pass.cpp b/test/std/input.output/file.streams/fstreams/filebuf.members/open_pointer.pass.cpp
index 8b95988..388d452 100644
--- a/test/std/input.output/file.streams/fstreams/filebuf.members/open_pointer.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/filebuf.members/open_pointer.pass.cpp
@@ -33,6 +33,8 @@
         assert(f.sbumpc() == '3');
     }
     std::remove(temp.c_str());
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wfilebuf f;
         assert(f.open(temp.c_str(), std::ios_base::out) != 0);
@@ -47,7 +49,8 @@
         assert(f.sbumpc() == L'2');
         assert(f.sbumpc() == L'3');
     }
-    remove(temp.c_str());
+    std::remove(temp.c_str());
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/filebuf.virtuals/overflow.pass.cpp b/test/std/input.output/file.streams/fstreams/filebuf.virtuals/overflow.pass.cpp
index 69ab278..d4f8f0f 100644
--- a/test/std/input.output/file.streams/fstreams/filebuf.virtuals/overflow.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/filebuf.virtuals/overflow.pass.cpp
@@ -80,6 +80,8 @@
         assert(f.sgetc() == 'a');
     }
     std::remove("overflow.dat");
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         test_buf<wchar_t> f;
         assert(f.open("overflow.dat", std::ios_base::out) != 0);
@@ -143,6 +145,7 @@
         assert(f.sbumpc() == -1);
     }
     std::remove("overflow.dat");
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/filebuf.virtuals/seekoff.pass.cpp b/test/std/input.output/file.streams/fstreams/filebuf.virtuals/seekoff.pass.cpp
index f9e8938..475974e 100644
--- a/test/std/input.output/file.streams/fstreams/filebuf.virtuals/seekoff.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/filebuf.virtuals/seekoff.pass.cpp
@@ -43,6 +43,8 @@
         assert(f.sgetc() == 'l');
     }
     std::remove("seekoff.dat");
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         wchar_t buf[10];
         typedef std::filebuf::pos_type pos_type;
@@ -64,6 +66,7 @@
         assert(f.sgetc() == L'l');
     }
     std::remove("seekoff.dat");
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/filebuf.virtuals/underflow.pass.cpp b/test/std/input.output/file.streams/fstreams/filebuf.virtuals/underflow.pass.cpp
index 1954ffa..7adc07d 100644
--- a/test/std/input.output/file.streams/fstreams/filebuf.virtuals/underflow.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/filebuf.virtuals/underflow.pass.cpp
@@ -78,6 +78,7 @@
         assert(*f.gptr() == '9');
         assert(f.egptr() - f.gptr() == 1);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         test_buf<wchar_t> f;
         assert(f.open("underflow.dat", std::ios_base::in) != 0);
@@ -125,6 +126,7 @@
         assert(f.sbumpc() == 0x4E53);
         assert(f.sbumpc() == static_cast<Traits::int_type>(-1));
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/fstream.assign/member_swap.pass.cpp b/test/std/input.output/file.streams/fstreams/fstream.assign/member_swap.pass.cpp
index d08ca9e..392fc40 100644
--- a/test/std/input.output/file.streams/fstreams/fstream.assign/member_swap.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/fstream.assign/member_swap.pass.cpp
@@ -65,6 +65,8 @@
     }
     std::remove(temp1.c_str());
     std::remove(temp2.c_str());
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wfstream fs1(temp1.c_str(), std::ios_base::in | std::ios_base::out
                                                    | std::ios_base::trunc);
@@ -88,6 +90,7 @@
     }
     std::remove(temp1.c_str());
     std::remove(temp2.c_str());
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/fstream.assign/move_assign.pass.cpp b/test/std/input.output/file.streams/fstreams/fstream.assign/move_assign.pass.cpp
index 9bc7887..90a7cf6 100644
--- a/test/std/input.output/file.streams/fstreams/fstream.assign/move_assign.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/fstream.assign/move_assign.pass.cpp
@@ -33,6 +33,8 @@
         assert(x == 3.25);
     }
     std::remove(temp.c_str());
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wfstream fso(temp.c_str(), std::ios_base::in | std::ios_base::out
                                                   | std::ios_base::trunc);
@@ -45,6 +47,7 @@
         assert(x == 3.25);
     }
     std::remove(temp.c_str());
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/fstream.assign/nonmember_swap.pass.cpp b/test/std/input.output/file.streams/fstreams/fstream.assign/nonmember_swap.pass.cpp
index e222392..287716f 100644
--- a/test/std/input.output/file.streams/fstreams/fstream.assign/nonmember_swap.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/fstream.assign/nonmember_swap.pass.cpp
@@ -67,6 +67,8 @@
     }
     std::remove(temp1.c_str());
     std::remove(temp2.c_str());
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wfstream fs1(temp1.c_str(), std::ios_base::in | std::ios_base::out
                                                    | std::ios_base::trunc);
@@ -90,6 +92,7 @@
     }
     std::remove(temp1.c_str());
     std::remove(temp2.c_str());
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/fstream.cons/default.pass.cpp b/test/std/input.output/file.streams/fstreams/fstream.cons/default.pass.cpp
index ac74678..5749de2 100644
--- a/test/std/input.output/file.streams/fstreams/fstream.cons/default.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/fstream.cons/default.pass.cpp
@@ -23,9 +23,11 @@
     {
         std::fstream fs;
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wfstream fs;
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/fstream.cons/move.pass.cpp b/test/std/input.output/file.streams/fstreams/fstream.cons/move.pass.cpp
index e210b56..b282e7f 100644
--- a/test/std/input.output/file.streams/fstreams/fstream.cons/move.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/fstream.cons/move.pass.cpp
@@ -32,6 +32,8 @@
         assert(x == 3.25);
     }
     std::remove(temp.c_str());
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wfstream fso(temp, std::ios_base::in | std::ios_base::out
                                                   | std::ios_base::trunc);
@@ -43,6 +45,7 @@
         assert(x == 3.25);
     }
     std::remove(temp.c_str());
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/fstream.cons/path.pass.cpp b/test/std/input.output/file.streams/fstreams/fstream.cons/path.pass.cpp
index 364fe72..6714e62 100644
--- a/test/std/input.output/file.streams/fstreams/fstream.cons/path.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/fstream.cons/path.pass.cpp
@@ -40,6 +40,8 @@
     assert(x == 3.25);
   }
   std::remove(p.string().c_str());
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   {
     std::wfstream fs(p, std::ios_base::in | std::ios_base::out |
                             std::ios_base::trunc);
@@ -50,6 +52,7 @@
     assert(x == 3.25);
   }
   std::remove(p.string().c_str());
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/fstream.cons/pointer.pass.cpp b/test/std/input.output/file.streams/fstreams/fstream.cons/pointer.pass.cpp
index 5ecdcc5..63f8b04 100644
--- a/test/std/input.output/file.streams/fstreams/fstream.cons/pointer.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/fstream.cons/pointer.pass.cpp
@@ -31,6 +31,8 @@
         assert(x == 3.25);
     }
     std::remove(temp.c_str());
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wfstream fs(temp.c_str(), std::ios_base::in | std::ios_base::out
                                                  | std::ios_base::trunc);
@@ -41,6 +43,7 @@
         assert(x == 3.25);
     }
     std::remove(temp.c_str());
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/fstream.cons/string.pass.cpp b/test/std/input.output/file.streams/fstreams/fstream.cons/string.pass.cpp
index d07926a..80b3fe4 100644
--- a/test/std/input.output/file.streams/fstreams/fstream.cons/string.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/fstream.cons/string.pass.cpp
@@ -32,6 +32,8 @@
         assert(x == 3.25);
     }
     std::remove(temp.c_str());
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wfstream fs(temp,
                          std::ios_base::in | std::ios_base::out
@@ -43,6 +45,7 @@
         assert(x == 3.25);
     }
     std::remove(temp.c_str());
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/fstream.members/close.pass.cpp b/test/std/input.output/file.streams/fstreams/fstream.members/close.pass.cpp
index ac708d1..d1ab079 100644
--- a/test/std/input.output/file.streams/fstreams/fstream.members/close.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/fstream.members/close.pass.cpp
@@ -30,6 +30,8 @@
         assert(!fs.is_open());
     }
     std::remove(temp.c_str());
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wfstream fs;
         assert(!fs.is_open());
@@ -39,6 +41,7 @@
         assert(!fs.is_open());
     }
     std::remove(temp.c_str());
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/fstream.members/open_path.pass.cpp b/test/std/input.output/file.streams/fstreams/fstream.members/open_path.pass.cpp
index 824201a..e44dde9 100644
--- a/test/std/input.output/file.streams/fstreams/fstream.members/open_path.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/fstream.members/open_path.pass.cpp
@@ -40,6 +40,8 @@
     assert(x == 3.25);
   }
   std::remove(p.string().c_str());
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   {
     std::wfstream stream;
     assert(!stream.is_open());
@@ -53,6 +55,7 @@
     assert(x == 3.25);
   }
   std::remove(p.string().c_str());
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/fstream.members/open_pointer.pass.cpp b/test/std/input.output/file.streams/fstreams/fstream.members/open_pointer.pass.cpp
index a406c6a..acfc282 100644
--- a/test/std/input.output/file.streams/fstreams/fstream.members/open_pointer.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/fstream.members/open_pointer.pass.cpp
@@ -34,6 +34,8 @@
         assert(x == 3.25);
     }
     std::remove(temp.c_str());
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wfstream fs;
         assert(!fs.is_open());
@@ -47,6 +49,7 @@
         assert(x == 3.25);
     }
     std::remove(temp.c_str());
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/fstream.members/open_string.pass.cpp b/test/std/input.output/file.streams/fstreams/fstream.members/open_string.pass.cpp
index 854b668..8ee0fe4 100644
--- a/test/std/input.output/file.streams/fstreams/fstream.members/open_string.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/fstream.members/open_string.pass.cpp
@@ -34,6 +34,8 @@
         assert(x == 3.25);
     }
     std::remove(temp.c_str());
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wfstream fs;
         assert(!fs.is_open());
@@ -47,6 +49,7 @@
         assert(x == 3.25);
     }
     std::remove(temp.c_str());
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/fstream.members/rdbuf.pass.cpp b/test/std/input.output/file.streams/fstreams/fstream.members/rdbuf.pass.cpp
index 2d86c25..7216b08 100644
--- a/test/std/input.output/file.streams/fstreams/fstream.members/rdbuf.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/fstream.members/rdbuf.pass.cpp
@@ -24,10 +24,13 @@
         std::fstream fs;
         assert(fs.rdbuf());
     }
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wfstream fs;
         assert(fs.rdbuf());
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/ifstream.assign/member_swap.pass.cpp b/test/std/input.output/file.streams/fstreams/ifstream.assign/member_swap.pass.cpp
index 7a5d9c1..0115959 100644
--- a/test/std/input.output/file.streams/fstreams/ifstream.assign/member_swap.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/ifstream.assign/member_swap.pass.cpp
@@ -32,6 +32,7 @@
         fs2 >> x;
         assert(x == 3.25);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wifstream fs1("test.dat");
         std::wifstream fs2("test2.dat");
@@ -42,6 +43,7 @@
         fs2 >> x;
         assert(x == 3.25);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/ifstream.assign/move_assign.pass.cpp b/test/std/input.output/file.streams/fstreams/ifstream.assign/move_assign.pass.cpp
index 439db87..abb3863 100644
--- a/test/std/input.output/file.streams/fstreams/ifstream.assign/move_assign.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/ifstream.assign/move_assign.pass.cpp
@@ -30,6 +30,7 @@
         fs >> x;
         assert(x == 3.25);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wifstream fso("test.dat");
         std::wifstream fs;
@@ -38,6 +39,7 @@
         fs >> x;
         assert(x == 3.25);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/ifstream.assign/nonmember_swap.pass.cpp b/test/std/input.output/file.streams/fstreams/ifstream.assign/nonmember_swap.pass.cpp
index f04c5e4..f22193d 100644
--- a/test/std/input.output/file.streams/fstreams/ifstream.assign/nonmember_swap.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/ifstream.assign/nonmember_swap.pass.cpp
@@ -33,6 +33,7 @@
         fs2 >> x;
         assert(x == 3.25);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wifstream fs1("test.dat");
         std::wifstream fs2("test2.dat");
@@ -43,6 +44,7 @@
         fs2 >> x;
         assert(x == 3.25);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/ifstream.cons/default.pass.cpp b/test/std/input.output/file.streams/fstreams/ifstream.cons/default.pass.cpp
index e4fffa7..043db15 100644
--- a/test/std/input.output/file.streams/fstreams/ifstream.cons/default.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/ifstream.cons/default.pass.cpp
@@ -23,9 +23,11 @@
     {
         std::ifstream fs;
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wifstream fs;
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/ifstream.cons/move.pass.cpp b/test/std/input.output/file.streams/fstreams/ifstream.cons/move.pass.cpp
index 28f55f6..f21943a 100644
--- a/test/std/input.output/file.streams/fstreams/ifstream.cons/move.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/ifstream.cons/move.pass.cpp
@@ -29,6 +29,7 @@
         fs >> x;
         assert(x == 3.25);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wifstream fso("test.dat");
         std::wifstream fs = std::move(fso);
@@ -36,6 +37,7 @@
         fs >> x;
         assert(x == 3.25);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/ifstream.cons/path.pass.cpp b/test/std/input.output/file.streams/fstreams/ifstream.cons/path.pass.cpp
index aef3014..9864376 100644
--- a/test/std/input.output/file.streams/fstreams/ifstream.cons/path.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/ifstream.cons/path.pass.cpp
@@ -48,6 +48,8 @@
   // std::ifstream(const fs::path&, std::ios_base::openmode) is tested in
   // test/std/input.output/file.streams/fstreams/ofstream.cons/string.pass.cpp
   // which creates writable files.
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   {
     std::wifstream fs(fs::path("test.dat"));
     double x = 0;
@@ -57,6 +59,7 @@
   // std::wifstream(const fs::path&, std::ios_base::openmode) is tested in
   // test/std/input.output/file.streams/fstreams/ofstream.cons/string.pass.cpp
   // which creates writable files.
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/ifstream.cons/pointer.pass.cpp b/test/std/input.output/file.streams/fstreams/ifstream.cons/pointer.pass.cpp
index e667425..bd08804 100644
--- a/test/std/input.output/file.streams/fstreams/ifstream.cons/pointer.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/ifstream.cons/pointer.pass.cpp
@@ -31,6 +31,8 @@
     // std::ifstream(const char*, std::ios_base::openmode) is tested in
     // test/std/input.output/file.streams/fstreams/ofstream.cons/pointer.pass.cpp
     // which creates writable files.
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wifstream fs("test.dat");
         double x = 0;
@@ -40,6 +42,7 @@
     // std::wifstream(const char*, std::ios_base::openmode) is tested in
     // test/std/input.output/file.streams/fstreams/ofstream.cons/pointer.pass.cpp
     // which creates writable files.
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/ifstream.cons/string.pass.cpp b/test/std/input.output/file.streams/fstreams/ifstream.cons/string.pass.cpp
index f0e9625..ae7976b 100644
--- a/test/std/input.output/file.streams/fstreams/ifstream.cons/string.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/ifstream.cons/string.pass.cpp
@@ -31,6 +31,8 @@
     // std::ifstream(const std::string&, std::ios_base::openmode) is tested in
     // test/std/input.output/file.streams/fstreams/ofstream.cons/string.pass.cpp
     // which creates writable files.
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wifstream fs(std::string("test.dat"));
         double x = 0;
@@ -40,6 +42,7 @@
     // std::wifstream(const std::string&, std::ios_base::openmode) is tested in
     // test/std/input.output/file.streams/fstreams/ofstream.cons/string.pass.cpp
     // which creates writable files.
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/ifstream.members/close.pass.cpp b/test/std/input.output/file.streams/fstreams/ifstream.members/close.pass.cpp
index 3641dfd..534e66e 100644
--- a/test/std/input.output/file.streams/fstreams/ifstream.members/close.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/ifstream.members/close.pass.cpp
@@ -30,6 +30,7 @@
         fs.close();
         assert(!fs.is_open());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wifstream fs;
         assert(!fs.is_open());
@@ -38,6 +39,7 @@
         fs.close();
         assert(!fs.is_open());
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/ifstream.members/open_path.pass.cpp b/test/std/input.output/file.streams/fstreams/ifstream.members/open_path.pass.cpp
index 2bb46b8..67f741e 100644
--- a/test/std/input.output/file.streams/fstreams/ifstream.members/open_path.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/ifstream.members/open_path.pass.cpp
@@ -40,6 +40,7 @@
     fs >> c;
     assert(c == 'r');
   }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   {
     std::wifstream fs;
     assert(!fs.is_open());
@@ -52,6 +53,7 @@
     fs >> c;
     assert(c == L'r');
   }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/ifstream.members/open_pointer.pass.cpp b/test/std/input.output/file.streams/fstreams/ifstream.members/open_pointer.pass.cpp
index 4626f96..ebd9909 100644
--- a/test/std/input.output/file.streams/fstreams/ifstream.members/open_pointer.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/ifstream.members/open_pointer.pass.cpp
@@ -34,6 +34,7 @@
         fs >> c;
         assert(c == 'r');
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wifstream fs;
         assert(!fs.is_open());
@@ -46,6 +47,7 @@
         fs >> c;
         assert(c == L'r');
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/ifstream.members/open_string.pass.cpp b/test/std/input.output/file.streams/fstreams/ifstream.members/open_string.pass.cpp
index 35722d5..f50cc96 100644
--- a/test/std/input.output/file.streams/fstreams/ifstream.members/open_string.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/ifstream.members/open_string.pass.cpp
@@ -34,6 +34,7 @@
         fs >> c;
         assert(c == 'r');
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wifstream fs;
         assert(!fs.is_open());
@@ -46,6 +47,7 @@
         fs >> c;
         assert(c == L'r');
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/ifstream.members/rdbuf.pass.cpp b/test/std/input.output/file.streams/fstreams/ifstream.members/rdbuf.pass.cpp
index aa6cbb2..c51a807 100644
--- a/test/std/input.output/file.streams/fstreams/ifstream.members/rdbuf.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/ifstream.members/rdbuf.pass.cpp
@@ -27,11 +27,13 @@
         std::filebuf* fb = fs.rdbuf();
         assert(fb->sgetc() == 'r');
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wifstream fs("test.dat");
         std::wfilebuf* fb = fs.rdbuf();
         assert(fb->sgetc() == L'r');
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/ofstream.assign/member_swap.pass.cpp b/test/std/input.output/file.streams/fstreams/ofstream.assign/member_swap.pass.cpp
index 4917bbf..37cb0a6 100644
--- a/test/std/input.output/file.streams/fstreams/ofstream.assign/member_swap.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/ofstream.assign/member_swap.pass.cpp
@@ -69,6 +69,8 @@
         assert(x == 3.25);
     }
     std::remove(temp2.c_str());
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wofstream fs1(temp1.c_str());
         std::wofstream fs2(temp2.c_str());
@@ -96,6 +98,7 @@
         assert(x == 3.25);
     }
     std::remove(temp2.c_str());
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/ofstream.assign/move_assign.pass.cpp b/test/std/input.output/file.streams/fstreams/ofstream.assign/move_assign.pass.cpp
index 4db1e6c..71e57a1 100644
--- a/test/std/input.output/file.streams/fstreams/ofstream.assign/move_assign.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/ofstream.assign/move_assign.pass.cpp
@@ -34,6 +34,8 @@
         assert(x == 3.25);
     }
     std::remove(temp.c_str());
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wofstream fso(temp.c_str());
         std::wofstream fs;
@@ -47,6 +49,7 @@
         assert(x == 3.25);
     }
     std::remove(temp.c_str());
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/ofstream.assign/nonmember_swap.pass.cpp b/test/std/input.output/file.streams/fstreams/ofstream.assign/nonmember_swap.pass.cpp
index 1ee265a..831d53c 100644
--- a/test/std/input.output/file.streams/fstreams/ofstream.assign/nonmember_swap.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/ofstream.assign/nonmember_swap.pass.cpp
@@ -70,6 +70,8 @@
         assert(x == 3.25);
     }
     std::remove(temp2.c_str());
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wofstream fs1(temp1.c_str());
         std::wofstream fs2(temp2.c_str());
@@ -97,6 +99,7 @@
         assert(x == 3.25);
     }
     std::remove(temp2.c_str());
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/ofstream.cons/default.pass.cpp b/test/std/input.output/file.streams/fstreams/ofstream.cons/default.pass.cpp
index 1b0ad82..3470133 100644
--- a/test/std/input.output/file.streams/fstreams/ofstream.cons/default.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/ofstream.cons/default.pass.cpp
@@ -23,9 +23,11 @@
     {
         std::ofstream fs;
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wofstream fs;
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/ofstream.cons/move.pass.cpp b/test/std/input.output/file.streams/fstreams/ofstream.cons/move.pass.cpp
index 01676f0..a06ad43 100644
--- a/test/std/input.output/file.streams/fstreams/ofstream.cons/move.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/ofstream.cons/move.pass.cpp
@@ -33,6 +33,8 @@
         assert(x == 3.25);
     }
     std::remove(temp.c_str());
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wofstream fso(temp.c_str());
         std::wofstream fs = std::move(fso);
@@ -45,6 +47,7 @@
         assert(x == 3.25);
     }
     std::remove(temp.c_str());
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/ofstream.cons/path.pass.cpp b/test/std/input.output/file.streams/fstreams/ofstream.cons/path.pass.cpp
index 5dc1f74..3a8be7f 100644
--- a/test/std/input.output/file.streams/fstreams/ofstream.cons/path.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/ofstream.cons/path.pass.cpp
@@ -53,6 +53,8 @@
     assert(x == 3.25);
   }
   std::remove(p.string().c_str());
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   {
     std::wofstream stream(p);
     stream << 3.25;
@@ -70,6 +72,7 @@
     assert(x == 3.25);
   }
   std::remove(p.string().c_str());
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/ofstream.cons/pointer.pass.cpp b/test/std/input.output/file.streams/fstreams/ofstream.cons/pointer.pass.cpp
index a00f763..b43f0ff 100644
--- a/test/std/input.output/file.streams/fstreams/ofstream.cons/pointer.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/ofstream.cons/pointer.pass.cpp
@@ -38,6 +38,8 @@
         assert(x == 3.25);
     }
     std::remove(temp.c_str());
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wofstream fs(temp.c_str());
         fs << 3.25;
@@ -55,6 +57,7 @@
         assert(x == 3.25);
     }
     std::remove(temp.c_str());
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/ofstream.cons/string.pass.cpp b/test/std/input.output/file.streams/fstreams/ofstream.cons/string.pass.cpp
index bd81f19..4c0823e 100644
--- a/test/std/input.output/file.streams/fstreams/ofstream.cons/string.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/ofstream.cons/string.pass.cpp
@@ -38,6 +38,8 @@
         assert(x == 3.25);
     }
     std::remove(temp.c_str());
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wofstream fs(temp);
         fs << 3.25;
@@ -55,6 +57,7 @@
         assert(x == 3.25);
     }
     std::remove(temp.c_str());
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/ofstream.members/close.pass.cpp b/test/std/input.output/file.streams/fstreams/ofstream.members/close.pass.cpp
index 21c362a..bcab4b3 100644
--- a/test/std/input.output/file.streams/fstreams/ofstream.members/close.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/ofstream.members/close.pass.cpp
@@ -30,6 +30,8 @@
         assert(!fs.is_open());
     }
     std::remove(temp.c_str());
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wofstream fs;
         assert(!fs.is_open());
@@ -39,6 +41,7 @@
         assert(!fs.is_open());
     }
     std::remove(temp.c_str());
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/ofstream.members/open_path.pass.cpp b/test/std/input.output/file.streams/fstreams/ofstream.members/open_path.pass.cpp
index 2c8fa8a..36f81df 100644
--- a/test/std/input.output/file.streams/fstreams/ofstream.members/open_path.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/ofstream.members/open_path.pass.cpp
@@ -46,6 +46,8 @@
     assert(c == 'a');
   }
   std::remove(p.string().c_str());
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   {
     std::wofstream fs;
     assert(!fs.is_open());
@@ -63,6 +65,7 @@
     assert(c == L'a');
   }
   std::remove(p.string().c_str());
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/ofstream.members/open_pointer.pass.cpp b/test/std/input.output/file.streams/fstreams/ofstream.members/open_pointer.pass.cpp
index eb39065..6b9d157 100644
--- a/test/std/input.output/file.streams/fstreams/ofstream.members/open_pointer.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/ofstream.members/open_pointer.pass.cpp
@@ -38,6 +38,8 @@
         assert(c == 'a');
     }
     std::remove(temp.c_str());
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wofstream fs;
         assert(!fs.is_open());
@@ -55,6 +57,7 @@
         assert(c == L'a');
     }
     std::remove(temp.c_str());
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/ofstream.members/open_string.pass.cpp b/test/std/input.output/file.streams/fstreams/ofstream.members/open_string.pass.cpp
index e817bbe..61bd22b 100644
--- a/test/std/input.output/file.streams/fstreams/ofstream.members/open_string.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/ofstream.members/open_string.pass.cpp
@@ -38,6 +38,8 @@
         assert(c == 'a');
     }
     std::remove(temp.c_str());
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wofstream fs;
         assert(!fs.is_open());
@@ -55,6 +57,7 @@
         assert(c == L'a');
     }
     std::remove(temp.c_str());
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/file.streams/fstreams/ofstream.members/rdbuf.pass.cpp b/test/std/input.output/file.streams/fstreams/ofstream.members/rdbuf.pass.cpp
index dab7e32..6af8665 100644
--- a/test/std/input.output/file.streams/fstreams/ofstream.members/rdbuf.pass.cpp
+++ b/test/std/input.output/file.streams/fstreams/ofstream.members/rdbuf.pass.cpp
@@ -27,12 +27,15 @@
         assert(fb->sputc('r') == 'r');
     }
     std::remove(temp.c_str());
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wofstream fs(temp.c_str());
         std::wfilebuf* fb = fs.rdbuf();
         assert(fb->sputc(L'r') == L'r');
     }
     std::remove(temp.c_str());
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/filesystems/class.path/path.member/path.append.pass.cpp b/test/std/input.output/filesystems/class.path/path.member/path.append.pass.cpp
index 5157161..799c89c 100644
--- a/test/std/input.output/filesystems/class.path/path.member/path.append.pass.cpp
+++ b/test/std/input.output/filesystems/class.path/path.member/path.append.pass.cpp
@@ -386,14 +386,18 @@
       assert(&Res == &LHS);
     }
     doAppendSourceTest<char>    (TC);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     doAppendSourceTest<wchar_t> (TC);
+#endif
     doAppendSourceTest<char16_t>(TC);
     doAppendSourceTest<char32_t>(TC);
   }
   for (auto const & TC : LongLHSCases) {
     (void)TC;
     LIBCPP_ONLY(doAppendSourceAllocTest<char>(TC));
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     LIBCPP_ONLY(doAppendSourceAllocTest<wchar_t>(TC));
+#endif
   }
   test_sfinae();
 
diff --git a/test/std/input.output/filesystems/class.path/path.member/path.assign/source.pass.cpp b/test/std/input.output/filesystems/class.path/path.member/path.assign/source.pass.cpp
index def6c43..235c3c6 100644
--- a/test/std/input.output/filesystems/class.path/path.member/path.assign/source.pass.cpp
+++ b/test/std/input.output/filesystems/class.path/path.member/path.assign/source.pass.cpp
@@ -236,7 +236,9 @@
 int main(int, char**) {
   for (auto const& MS : PathList) {
     RunTestCase<char>(MS);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     RunTestCase<wchar_t>(MS);
+#endif
     RunTestCase<char16_t>(MS);
     RunTestCase<char32_t>(MS);
     RunStringMoveTest(MS);
diff --git a/test/std/input.output/filesystems/class.path/path.member/path.charconv.pass.cpp b/test/std/input.output/filesystems/class.path/path.member/path.charconv.pass.cpp
index 4f9dc26..f8e8da4 100644
--- a/test/std/input.output/filesystems/class.path/path.member/path.charconv.pass.cpp
+++ b/test/std/input.output/filesystems/class.path/path.member/path.charconv.pass.cpp
@@ -39,11 +39,6 @@
 #include "test_macros.h"
 #include "filesystem_test_helper.h"
 
-// libstdc++ doesn't define conversions from/to wchar_t outside of windows.
-#if defined(__GLIBCXX__) && !defined(_WIN32)
-#  define HAS_NO_WCHAR
-#endif
-
 // Test conversion with strings that fit within the latin1 charset, that fit
 // within one code point in UTF-16, and that can be expressible in certain
 // one-byte code pages.
@@ -57,7 +52,7 @@
 #else
   const char u8str[] = { char(0xc3), char(0xa5), char(0xc3), char(0xa4), char(0xc3), char(0xb6), 0x00 };
 #endif
-#ifndef HAS_NO_WCHAR
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   const wchar_t wstr[] = { 0xe5, 0xe4, 0xf6, 0x00 };
 #endif
 
@@ -112,7 +107,7 @@
     assert(p.string<char8_t>() == u8str);
   }
 #endif
-#ifndef HAS_NO_WCHAR
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   // Test conversion to/from wchar_t.
   {
     const fs::path p(u16str);
@@ -132,7 +127,7 @@
     assert(p.u32string() == u32str);
     assert(p.string<wchar_t>() == wstr);
   }
-#endif
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 #ifndef _WIN32
   // Test conversion to/from regular char-based string. On POSIX, this
   // is implied to convert to/from UTF-8.
@@ -226,14 +221,13 @@
     assert(p.u16string() == u16str);
     assert(p.u32string() == u32str);
   }
-#if !defined(HAS_NO_WCHAR) && defined(__SIZEOF_WCHAR_T__)
-#if __SIZEOF_WCHAR_T__ == 2
+#if !defined(TEST_HAS_NO_WIDE_CHARACTERS) && defined(__SIZEOF_WCHAR_T__)
+# if __SIZEOF_WCHAR_T__ == 2
   const wchar_t wstr[] = { 0xd801, 0xdc37, 0x00 };
-#else
+# else
   const wchar_t wstr[] = { 0x10437, 0x00 };
-#endif
+# endif
   // Test conversion to/from wchar_t.
-  // libstdc++ doesn't define conversions from/to wchar_t outside of windows.
   {
     const fs::path p = fs::u8path(str);
     assert(p.wstring() == wstr);
@@ -253,7 +247,7 @@
     assert(p.u32string() == u32str);
     assert(p.wstring() == wstr);
   }
-#endif
+#endif // !defined(TEST_HAS_NO_WIDE_CHARACTERS) && defined(__SIZEOF_WCHAR_T__)
 }
 
 // Test appending paths in different encodings.
@@ -273,14 +267,13 @@
     p /= u32str;
     assert(p.u32string() == u32ref);
   }
-#if !defined(HAS_NO_WCHAR) && defined(__SIZEOF_WCHAR_T__)
-#if __SIZEOF_WCHAR_T__ == 2
+#if !defined(TEST_HAS_NO_WIDE_CHARACTERS) && defined(__SIZEOF_WCHAR_T__)
+# if __SIZEOF_WCHAR_T__ == 2
   const wchar_t wstr[] = { 0xd801, 0xdc37, 0x00 };
-#else
+# else
   const wchar_t wstr[] = { 0x10437, 0x00 };
-#endif
+# endif
   // Test conversion from wchar_t.
-  // libstdc++ doesn't define conversions from/to wchar_t outside of windows.
   {
     fs::path p = fs::path(u16str) / wstr / u32str;
     assert(p.u32string() == u32ref);
@@ -291,7 +284,7 @@
     p /= u32str;
     assert(p.u32string() == u32ref);
   }
-#endif
+#endif // !defined(TEST_HAS_NO_WIDE_CHARACTERS) && defined(__SIZEOF_WCHAR_T__)
 }
 
 static void test_concat()
@@ -308,14 +301,13 @@
     p = fs::u8path(str).concat(u16str).concat(u32str);
     assert(p.u32string() == u32ref);
   }
-#if !defined(HAS_NO_WCHAR) && defined(__SIZEOF_WCHAR_T__)
-#if __SIZEOF_WCHAR_T__ == 2
+#if !defined(TEST_HAS_NO_WIDE_CHARACTERS) && defined(__SIZEOF_WCHAR_T__)
+# if __SIZEOF_WCHAR_T__ == 2
   const wchar_t wstr[] = { 0xd801, 0xdc37, 0x00 };
-#else
+# else
   const wchar_t wstr[] = { 0x10437, 0x00 };
-#endif
+# endif
   // Test conversion from wchar_t.
-  // libstdc++ doesn't define conversions from/to wchar_t outside of windows.
   {
     fs::path p = fs::path(u16str);
     p += wstr;
@@ -324,7 +316,7 @@
     p = fs::path(u16str).concat(wstr).concat(u32str);
     assert(p.u32string() == u32ref);
   }
-#endif
+#endif // !defined(TEST_HAS_NO_WIDE_CHARACTERS) && defined(__SIZEOF_WCHAR_T__)
 }
 
 static void test_append_concat_narrow()
diff --git a/test/std/input.output/filesystems/class.path/path.member/path.concat.pass.cpp b/test/std/input.output/filesystems/class.path/path.member/path.concat.pass.cpp
index 6212e1d..3442e30 100644
--- a/test/std/input.output/filesystems/class.path/path.member/path.concat.pass.cpp
+++ b/test/std/input.output/filesystems/class.path/path.member/path.concat.pass.cpp
@@ -361,7 +361,9 @@
       assert(&Ref == &LHS);
     }
     doConcatSourceTest<char>    (TC);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     doConcatSourceTest<wchar_t> (TC);
+#endif
     doConcatSourceTest<char16_t>(TC);
     doConcatSourceTest<char32_t>(TC);
   }
@@ -392,11 +394,15 @@
       assert(LHS == E);
     }
     LIBCPP_ONLY(doConcatSourceAllocTest<char>(TC));
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     LIBCPP_ONLY(doConcatSourceAllocTest<wchar_t>(TC));
+#endif
   }
   for (auto const& TC : CharTestCases) {
     doConcatECharTest<char>(TC);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     doConcatECharTest<wchar_t>(TC);
+#endif
     doConcatECharTest<char16_t>(TC);
     doConcatECharTest<char32_t>(TC);
   }
diff --git a/test/std/input.output/filesystems/class.path/path.member/path.construct/source.pass.cpp b/test/std/input.output/filesystems/class.path/path.member/path.construct/source.pass.cpp
index f689769..64cebeb 100644
--- a/test/std/input.output/filesystems/class.path/path.member/path.construct/source.pass.cpp
+++ b/test/std/input.output/filesystems/class.path/path.member/path.construct/source.pass.cpp
@@ -129,7 +129,9 @@
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     RunTestCase<char8_t>(MS);
 #endif
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     RunTestCase<wchar_t>(MS);
+#endif
     RunTestCase<char16_t>(MS);
     RunTestCase<char32_t>(MS);
   }
diff --git a/test/std/input.output/filesystems/class.path/path.member/path.generic.obs/generic_string_alloc.pass.cpp b/test/std/input.output/filesystems/class.path/path.member/path.generic.obs/generic_string_alloc.pass.cpp
index 8034e22..7d8893a 100644
--- a/test/std/input.output/filesystems/class.path/path.member/path.generic.obs/generic_string_alloc.pass.cpp
+++ b/test/std/input.output/filesystems/class.path/path.member/path.generic.obs/generic_string_alloc.pass.cpp
@@ -62,7 +62,9 @@
 int main(int, char**)
 {
   doAllocTest<char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   doAllocTest<wchar_t>();
+#endif
   doAllocTest<char16_t>();
   doAllocTest<char32_t>();
 #if TEST_STD_VER > 17 && defined(__cpp_lib_char8_t)
diff --git a/test/std/input.output/filesystems/class.path/path.member/path.generic.obs/named_overloads.pass.cpp b/test/std/input.output/filesystems/class.path/path.member/path.generic.obs/named_overloads.pass.cpp
index d899159..bc547e5 100644
--- a/test/std/input.output/filesystems/class.path/path.member/path.generic.obs/named_overloads.pass.cpp
+++ b/test/std/input.output/filesystems/class.path/path.member/path.generic.obs/named_overloads.pass.cpp
@@ -62,10 +62,12 @@
     assert(s == (const char*)MS);
 #endif
   }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   {
     std::wstring s = p.generic_wstring();
     assert(s == (const wchar_t*)MS);
   }
+#endif
   {
     std::u16string s = p.generic_u16string();
     assert(s == (const char16_t*)MS);
diff --git a/test/std/input.output/filesystems/class.path/path.member/path.native.obs/named_overloads.pass.cpp b/test/std/input.output/filesystems/class.path/path.member/path.native.obs/named_overloads.pass.cpp
index 05075a3..6611da4 100644
--- a/test/std/input.output/filesystems/class.path/path.member/path.native.obs/named_overloads.pass.cpp
+++ b/test/std/input.output/filesystems/class.path/path.member/path.native.obs/named_overloads.pass.cpp
@@ -56,10 +56,12 @@
     assert(s == (const char*)MS);
 #endif
   }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   {
     std::wstring s = p.wstring();
     assert(s == (const wchar_t*)MS);
   }
+#endif
   {
     std::u16string s = p.u16string();
     assert(s == (const char16_t*)MS);
diff --git a/test/std/input.output/filesystems/class.path/path.nonmember/path.io.pass.cpp b/test/std/input.output/filesystems/class.path/path.nonmember/path.io.pass.cpp
index 7c60ae2..5729671 100644
--- a/test/std/input.output/filesystems/class.path/path.nonmember/path.io.pass.cpp
+++ b/test/std/input.output/filesystems/class.path/path.nonmember/path.io.pass.cpp
@@ -36,8 +36,6 @@
 MultiStringType InStr =  MKSTR("abcdefg/\"hijklmnop\"/qrstuvwxyz/123456789");
 MultiStringType OutStr = MKSTR("\"abcdefg/\\\"hijklmnop\\\"/qrstuvwxyz/123456789\"");
 
-
-
 template <class CharT>
 void doIOTest() {
   using namespace fs;
@@ -83,15 +81,19 @@
 struct is_istreamable : decltype(impl::is_istreamable_imp<Stream, Tp>(0)) {};
 
 void test_LWG2989() {
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   static_assert(!is_ostreamable<decltype(std::cout), std::wstring>::value, "");
   static_assert(!is_ostreamable<decltype(std::wcout), std::string>::value, "");
   static_assert(!is_istreamable<decltype(std::cin), std::wstring>::value, "");
   static_assert(!is_istreamable<decltype(std::wcin), std::string>::value, "");
+#endif
 }
 
 int main(int, char**) {
   doIOTest<char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   doIOTest<wchar_t>();
+#endif
   //doIOTest<char16_t>();
   //doIOTest<char32_t>();
   test_LWG2989();
diff --git a/test/std/input.output/iostream.format/ext.manip/get_money.pass.cpp b/test/std/input.output/iostream.format/ext.manip/get_money.pass.cpp
index a2934b2..e6cce94 100644
--- a/test/std/input.output/iostream.format/ext.manip/get_money.pass.cpp
+++ b/test/std/input.output/iostream.format/ext.manip/get_money.pass.cpp
@@ -59,6 +59,7 @@
         is >> std::get_money(x, true);
         assert(x == -123456789);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L"  -$1,234,567.89");
         std::wistream is(&sb);
@@ -75,6 +76,7 @@
         is >> std::get_money(x, true);
         assert(x == -123456789);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/ext.manip/get_time.pass.cpp b/test/std/input.output/iostream.format/ext.manip/get_time.pass.cpp
index 7fd353c..addf53f 100644
--- a/test/std/input.output/iostream.format/ext.manip/get_time.pass.cpp
+++ b/test/std/input.output/iostream.format/ext.manip/get_time.pass.cpp
@@ -57,6 +57,7 @@
         assert(is.eof());
         assert(!is.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L"  Sat Dec 31 23:55:59 2061");
         std::wistream is(&sb);
@@ -73,6 +74,7 @@
         assert(is.eof());
         assert(!is.fail());
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/ext.manip/put_money.pass.cpp b/test/std/input.output/iostream.format/ext.manip/put_money.pass.cpp
index acb4552..1678412 100644
--- a/test/std/input.output/iostream.format/ext.manip/put_money.pass.cpp
+++ b/test/std/input.output/iostream.format/ext.manip/put_money.pass.cpp
@@ -73,6 +73,7 @@
         os << std::put_money(x, true);
         assert(sb.str() == "-USD 1,234,567.89");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::wostream os(&sb);
@@ -91,6 +92,7 @@
         os << std::put_money(x, true);
         assert(sb.str() == L"-USD 1,234,567.89");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/ext.manip/put_time.pass.cpp b/test/std/input.output/iostream.format/ext.manip/put_time.pass.cpp
index 6208967..7de93be 100644
--- a/test/std/input.output/iostream.format/ext.manip/put_time.pass.cpp
+++ b/test/std/input.output/iostream.format/ext.manip/put_time.pass.cpp
@@ -69,6 +69,7 @@
         os << std::put_time(&t, "%a %b %d %H:%M:%S %Y");
         assert(sb.str() == "Sat Dec 31 23:55:59 2061");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::wostream os(&sb);
@@ -84,6 +85,7 @@
         os << std::put_time(&t, L"%a %b %d %H:%M:%S %Y");
         assert(sb.str() == L"Sat Dec 31 23:55:59 2061");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/input.streams/iostreamclass/iostream.assign/member_swap.pass.cpp b/test/std/input.output/iostream.format/input.streams/iostreamclass/iostream.assign/member_swap.pass.cpp
index 00e44f9..a1fbc7d 100644
--- a/test/std/input.output/iostream.format/input.streams/iostreamclass/iostream.assign/member_swap.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/iostreamclass/iostream.assign/member_swap.pass.cpp
@@ -60,6 +60,7 @@
         assert(is2.precision() == 6);
         assert(is2.getloc().name() == "C");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb1;
         testbuf<wchar_t> sb2;
@@ -83,6 +84,7 @@
         assert(is2.precision() == 6);
         assert(is2.getloc().name() == "C");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/input.streams/iostreamclass/iostream.assign/move_assign.pass.cpp b/test/std/input.output/iostream.format/input.streams/iostreamclass/iostream.assign/move_assign.pass.cpp
index fb1f524..b8b2f01 100644
--- a/test/std/input.output/iostream.format/input.streams/iostreamclass/iostream.assign/move_assign.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/iostreamclass/iostream.assign/move_assign.pass.cpp
@@ -63,6 +63,7 @@
         assert(is2.precision() == 6);
         assert(is2.getloc().name() == "C");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb1;
         testbuf<wchar_t> sb2;
@@ -86,6 +87,7 @@
         assert(is2.precision() == 6);
         assert(is2.getloc().name() == "C");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/input.streams/iostreamclass/iostream.cons/move.pass.cpp b/test/std/input.output/iostream.format/input.streams/iostreamclass/iostream.cons/move.pass.cpp
index 2a4e1a6..c1761fc 100644
--- a/test/std/input.output/iostream.format/input.streams/iostreamclass/iostream.cons/move.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/iostreamclass/iostream.cons/move.pass.cpp
@@ -56,6 +56,7 @@
         assert(is.precision() == 6);
         assert(is.getloc().name() == "C");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         test_iostream<wchar_t> is1(&sb);
@@ -72,6 +73,7 @@
         assert(is.precision() == 6);
         assert(is.getloc().name() == "C");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/input.streams/iostreamclass/iostream.cons/streambuf.pass.cpp b/test/std/input.output/iostream.format/input.streams/iostreamclass/iostream.cons/streambuf.pass.cpp
index 012737f..e30560e 100644
--- a/test/std/input.output/iostream.format/input.streams/iostreamclass/iostream.cons/streambuf.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/iostreamclass/iostream.cons/streambuf.pass.cpp
@@ -40,6 +40,7 @@
         assert(is.getloc().name() == "C");
         assert(is.gcount() == 0);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::basic_iostream<wchar_t> is(&sb);
@@ -53,6 +54,7 @@
         assert(is.getloc().name() == "C");
         assert(is.gcount() == 0);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/bool.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/bool.pass.cpp
index ea354a4..fa14790 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/bool.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/bool.pass.cpp
@@ -69,6 +69,7 @@
         assert(!is.eof());
         assert(!is.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" 1 ");
         std::wistream is(&sb);
@@ -78,6 +79,7 @@
         assert(!is.eof());
         assert(!is.fail());
     }
+#endif
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         testbuf<char> sb;
diff --git a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/double.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/double.pass.cpp
index a3f977b..85d13b3 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/double.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/double.pass.cpp
@@ -69,6 +69,7 @@
         assert(!is.eof());
         assert(!is.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" -123.5 ");
         std::wistream is(&sb);
@@ -78,6 +79,7 @@
         assert(!is.eof());
         assert(!is.fail());
     }
+#endif
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         testbuf<char> sb;
diff --git a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/float.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/float.pass.cpp
index 2d68dfd..44ba89a 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/float.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/float.pass.cpp
@@ -69,6 +69,7 @@
         assert(!is.eof());
         assert(!is.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" -123.5 ");
         std::wistream is(&sb);
@@ -78,6 +79,7 @@
         assert(!is.eof());
         assert(!is.fail());
     }
+#endif
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         testbuf<char> sb;
diff --git a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/int.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/int.pass.cpp
index 563b8d2..5ab4515 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/int.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/int.pass.cpp
@@ -70,6 +70,7 @@
         assert(!is.eof());
         assert(!is.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" -1234567890123456 ");
         std::wistream is(&sb);
@@ -79,6 +80,7 @@
         assert(!is.eof());
         assert( is.fail());
     }
+#endif
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         testbuf<char> sb;
diff --git a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/long.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/long.pass.cpp
index 5d00260..4af8578 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/long.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/long.pass.cpp
@@ -69,6 +69,7 @@
         assert(!is.eof());
         assert(!is.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" -123 ");
         std::wistream is(&sb);
@@ -78,6 +79,7 @@
         assert(!is.eof());
         assert(!is.fail());
     }
+#endif
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         testbuf<char> sb;
diff --git a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/long_double.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/long_double.pass.cpp
index ed198d5..e7d7074 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/long_double.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/long_double.pass.cpp
@@ -69,6 +69,7 @@
         assert(!is.eof());
         assert(!is.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" -123.5 ");
         std::wistream is(&sb);
@@ -78,6 +79,7 @@
         assert(!is.eof());
         assert(!is.fail());
     }
+#endif
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         testbuf<char> sb;
diff --git a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/long_long.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/long_long.pass.cpp
index d6ccc11..e13237c 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/long_long.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/long_long.pass.cpp
@@ -69,6 +69,7 @@
         assert(!is.eof());
         assert(!is.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" -123 ");
         std::wistream is(&sb);
@@ -78,6 +79,7 @@
         assert(!is.eof());
         assert(!is.fail());
     }
+#endif
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         testbuf<char> sb;
diff --git a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/pointer.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/pointer.pass.cpp
index 9b9fab8..f3b5bba 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/pointer.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/pointer.pass.cpp
@@ -69,6 +69,7 @@
         assert(!is.eof());
         assert(!is.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" 1 ");
         std::wistream is(&sb);
@@ -78,6 +79,7 @@
         assert(!is.eof());
         assert(!is.fail());
     }
+#endif
     {
         testbuf<char> sb("12345678");
         std::istream is(&sb);
@@ -87,6 +89,7 @@
         assert( is.eof());
         assert(!is.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L"12345678");
         std::wistream is(&sb);
@@ -96,6 +99,7 @@
         assert( is.eof());
         assert(!is.fail());
     }
+#endif
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         testbuf<char> sb;
diff --git a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/short.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/short.pass.cpp
index dbecc33..4f9c1a1 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/short.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/short.pass.cpp
@@ -70,6 +70,7 @@
         assert(!is.eof());
         assert(!is.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" -1234567890 ");
         std::wistream is(&sb);
@@ -79,6 +80,7 @@
         assert(!is.eof());
         assert( is.fail());
     }
+#endif
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         testbuf<char> sb;
diff --git a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/unsigned_int.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/unsigned_int.pass.cpp
index d0ad521..64bafa1 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/unsigned_int.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/unsigned_int.pass.cpp
@@ -69,6 +69,7 @@
         assert(!is.eof());
         assert(!is.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" 123 ");
         std::wistream is(&sb);
@@ -78,6 +79,7 @@
         assert(!is.eof());
         assert(!is.fail());
     }
+#endif
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         testbuf<char> sb;
diff --git a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/unsigned_long.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/unsigned_long.pass.cpp
index 984c188..764ca34 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/unsigned_long.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/unsigned_long.pass.cpp
@@ -69,6 +69,7 @@
         assert(!is.eof());
         assert(!is.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" 123 ");
         std::wistream is(&sb);
@@ -78,6 +79,7 @@
         assert(!is.eof());
         assert(!is.fail());
     }
+#endif
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         testbuf<char> sb;
diff --git a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/unsigned_long_long.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/unsigned_long_long.pass.cpp
index a67ae60..25dface 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/unsigned_long_long.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/unsigned_long_long.pass.cpp
@@ -69,6 +69,7 @@
         assert(!is.eof());
         assert(!is.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" 123 ");
         std::wistream is(&sb);
@@ -78,6 +79,7 @@
         assert(!is.eof());
         assert(!is.fail());
     }
+#endif
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         testbuf<char> sb;
diff --git a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/unsigned_short.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/unsigned_short.pass.cpp
index 7157c88..e01cd3d 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/unsigned_short.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/unsigned_short.pass.cpp
@@ -69,6 +69,7 @@
         assert(!is.eof());
         assert(!is.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" 123 ");
         std::wistream is(&sb);
@@ -78,6 +79,7 @@
         assert(!is.eof());
         assert(!is.fail());
     }
+#endif
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         testbuf<char> sb;
diff --git a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream_extractors/chart.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream_extractors/chart.pass.cpp
index 15f26fc..ca7df06 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream_extractors/chart.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream_extractors/chart.pass.cpp
@@ -67,6 +67,7 @@
         assert(!is.fail());
         assert(c == 'c');
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L"   abc");
         std::wistream is(&sb);
@@ -84,6 +85,7 @@
         assert(!is.fail());
         assert(c == L'c');
     }
+#endif
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         testbuf<char> sb;
@@ -103,6 +105,7 @@
         assert(is.eof());
         assert(threw);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::basic_istream<wchar_t> is(&sb);
@@ -121,6 +124,7 @@
         assert(is.eof());
         assert(threw);
     }
+#endif
     {
         testbuf<char> sb;
         std::basic_istream<char> is(&sb);
@@ -139,6 +143,7 @@
         assert(is.eof());
         assert(threw);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::basic_istream<wchar_t> is(&sb);
@@ -157,6 +162,7 @@
         assert(is.eof());
         assert(threw);
     }
+#endif
 #endif // TEST_HAS_NO_EXCEPTIONS
 
     return 0;
diff --git a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream_extractors/streambuf.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream_extractors/streambuf.pass.cpp
index d71f295..ff96d12 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream_extractors/streambuf.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream_extractors/streambuf.pass.cpp
@@ -86,6 +86,7 @@
         assert( is.eof());
         assert(!is.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" ");
         std::basic_istream<wchar_t> is(&sb);
@@ -102,6 +103,7 @@
         assert( is.eof());
         assert(!is.fail());
     }
+#endif
 
     {
         testbuf<char> sb;
@@ -119,6 +121,7 @@
         assert( is.eof());
         assert( is.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::basic_istream<wchar_t> is(&sb);
@@ -135,6 +138,7 @@
         assert( is.eof());
         assert( is.fail());
     }
+#endif
 
     {
         testbuf<char> sb;
@@ -151,6 +155,7 @@
         assert(!is.eof());
         assert( is.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::basic_istream<wchar_t> is(&sb);
@@ -167,6 +172,7 @@
         assert( is.fail());
     }
 #endif
+#endif // TEST_HAS_NO_EXCEPTIONS
 
     return 0;
 }
diff --git a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream_extractors/wchar_t_pointer.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream_extractors/wchar_t_pointer.pass.cpp
index 117a0ba..736849b 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream_extractors/wchar_t_pointer.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream_extractors/wchar_t_pointer.pass.cpp
@@ -61,6 +61,7 @@
         assert(std::string(s) == "abc");
     }
 #endif
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L"   abcdefghijk    ");
         std::wistream is(&sb);
@@ -93,6 +94,7 @@
         assert(std::wstring(s) == L"abc");
     }
 #endif
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<char> sb("   abcdefghijk");
         std::istream is(&sb);
@@ -135,6 +137,7 @@
         assert(is.eof());
         assert(threw);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::wistream is(&sb);
@@ -154,6 +157,7 @@
         assert(is.eof());
         assert(threw);
     }
+#endif
     {
         testbuf<char> sb;
         std::basic_istream<char> is(&sb);
@@ -173,6 +177,7 @@
         assert(is.eof());
         assert(threw);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::wistream is(&sb);
@@ -192,6 +197,7 @@
         assert(is.eof());
         assert(threw);
     }
+#endif
 #endif // TEST_HAS_NO_EXCEPTIONS
 
     return 0;
diff --git a/test/std/input.output/iostream.format/input.streams/istream.manip/ws.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.manip/ws.pass.cpp
index 0eaf58b..96c3b74 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.manip/ws.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.manip/ws.pass.cpp
@@ -49,6 +49,7 @@
         assert(is.good());
         assert(is.peek() == '1');
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L"   123");
         std::wistream is(&sb);
@@ -56,6 +57,7 @@
         assert(is.good());
         assert(is.peek() == L'1');
     }
+#endif
     {
         testbuf<char> sb("  ");
         std::istream is(&sb);
@@ -66,6 +68,7 @@
         assert(is.eof());
         assert(is.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L"  ");
         std::wistream is(&sb);
@@ -76,6 +79,7 @@
         assert(is.eof());
         assert(is.fail());
     }
+#endif
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         testbuf<char> sb("  ");
@@ -94,6 +98,7 @@
         assert( is.eof());
         assert(threw);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L"  ");
         std::basic_istream<wchar_t> is(&sb);
@@ -111,7 +116,8 @@
         assert( is.eof());
         assert(threw);
     }
-#endif
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
+#endif // TEST_HAS_NO_EXCEPTIONS
 
     return 0;
 }
diff --git a/test/std/input.output/iostream.format/input.streams/istream.rvalue/rvalue.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.rvalue/rvalue.pass.cpp
index a2fe4e8..23ad80e 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.rvalue/rvalue.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.rvalue/rvalue.pass.cpp
@@ -63,6 +63,7 @@
         assert(&result == &is);
         assert(i.value == 123);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L"   123");
         Int i = {0};
@@ -71,6 +72,7 @@
         assert(&result == &is);
         assert(i.value == 123);
     }
+#endif
     {
         // test perfect forwarding
         assert(called == false);
diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/get.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/get.pass.cpp
index 91ae104..18a29da 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/get.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/get.pass.cpp
@@ -75,6 +75,7 @@
         assert(c == 'c');
         assert(is.gcount() == 1);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" abc");
         std::wistream is(&sb);
@@ -99,6 +100,7 @@
         assert(c == L'c');
         assert(is.gcount() == 1);
     }
+#endif
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         testbuf<char> sb("rrrrrrrrr");
@@ -121,6 +123,7 @@
         assert( is.eof());
         assert(threw);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L"rrrrrrrrr");
         std::basic_istream<wchar_t> is(&sb);
@@ -143,6 +146,7 @@
         assert(threw);
     }
 #endif
+#endif // TEST_HAS_NO_EXCEPTIONS
 
     return 0;
 }
diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_chart.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_chart.pass.cpp
index fb3c2d0..7dd808e 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_chart.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_chart.pass.cpp
@@ -77,6 +77,7 @@
         assert(c == 'c');
         assert(is.gcount() == 1);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" abc");
         std::wistream is(&sb);
@@ -102,6 +103,7 @@
         assert(c == L'c');
         assert(is.gcount() == 1);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         testbuf<char> sb("rrrrrrrrr");
@@ -125,6 +127,7 @@
         assert( is.eof());
         assert(threw);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L"rrrrrrrrr");
         std::basic_istream<wchar_t> is(&sb);
@@ -147,7 +150,8 @@
         assert( is.eof());
         assert(threw);
     }
-#endif
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
+#endif // TEST_HAS_NO_EXCEPTIONS
 
     return 0;
 }
diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_pointer_size.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_pointer_size.pass.cpp
index b3af36e..76e860f 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_pointer_size.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_pointer_size.pass.cpp
@@ -79,6 +79,7 @@
         assert(std::string(s) == "");
         assert(is.gcount() == 0);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L"  \n    \n ");
         std::wistream is(&sb);
@@ -113,6 +114,7 @@
         assert(std::wstring(s) == L"");
         assert(is.gcount() == 0);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         testbuf<char> sb(" ");
@@ -132,6 +134,7 @@
         assert(std::string(s) == " ");
         assert(is.gcount() == 1);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" ");
         std::basic_istream<wchar_t> is(&sb);
@@ -150,6 +153,7 @@
         assert(std::wstring(s) == L" ");
         assert(is.gcount() == 1);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
     {
         testbuf<char> sb;
@@ -169,6 +173,7 @@
         assert(std::basic_string<char>(s) == "");
         assert(is.gcount() == 0);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::basic_istream<wchar_t> is(&sb);
@@ -187,7 +192,8 @@
         assert(std::basic_string<wchar_t>(s) == L"");
         assert(is.gcount() == 0);
     }
-#endif
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
+#endif // TEST_HAS_NO_EXCEPTIONS
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_pointer_size_chart.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_pointer_size_chart.pass.cpp
index 11b820e..38b5163 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_pointer_size_chart.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_pointer_size_chart.pass.cpp
@@ -79,6 +79,7 @@
         assert(std::string(s) == "");
         assert(is.gcount() == 0);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L"  *    * ");
         std::wistream is(&sb);
@@ -113,6 +114,7 @@
         assert(std::wstring(s) == L"");
         assert(is.gcount() == 0);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         testbuf<char> sb(" ");
@@ -132,6 +134,7 @@
         assert(std::basic_string<char>(s) == " ");
         assert(is.gcount() == 1);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" ");
         std::basic_istream<wchar_t> is(&sb);
@@ -150,6 +153,7 @@
         assert(std::basic_string<wchar_t>(s) == L" ");
         assert(is.gcount() == 1);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
     {
         testbuf<char> sb;
@@ -169,6 +173,7 @@
         assert(std::basic_string<char>(s) == "");
         assert(is.gcount() == 0);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::basic_istream<wchar_t> is(&sb);
@@ -187,7 +192,8 @@
         assert(std::basic_string<wchar_t>(s) == L"");
         assert(is.gcount() == 0);
     }
-#endif
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
+#endif // TEST_HAS_NO_EXCEPTIONS
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_streambuf.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_streambuf.pass.cpp
index 8067792..a6c6687 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_streambuf.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_streambuf.pass.cpp
@@ -73,6 +73,7 @@
         assert(!is.fail());
         assert(is.gcount() == 3);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L"testing\n...");
         std::wistream is(&sb);
@@ -88,6 +89,7 @@
         assert(!is.fail());
         assert(is.gcount() == 3);
     }
+#endif
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         testbuf<char> sb(" ");
@@ -105,6 +107,7 @@
         assert( is.eof());
         assert(!is.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" ");
         std::basic_istream<wchar_t> is(&sb);
@@ -121,6 +124,7 @@
         assert( is.eof());
         assert(!is.fail());
     }
+#endif
 
     {
         testbuf<char> sb;
@@ -138,6 +142,7 @@
         assert( is.eof());
         assert( is.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::basic_istream<wchar_t> is(&sb);
@@ -155,6 +160,7 @@
         assert( is.fail());
     }
 #endif
+#endif // TEST_HAS_NO_EXCEPTIONS
 
     return 0;
 }
diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_streambuf_chart.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_streambuf_chart.pass.cpp
index dceb06a..27d9ed8 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_streambuf_chart.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_streambuf_chart.pass.cpp
@@ -73,6 +73,7 @@
         assert(!is.fail());
         assert(is.gcount() == 3);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L"testing*...");
         std::wistream is(&sb);
@@ -88,6 +89,7 @@
         assert(!is.fail());
         assert(is.gcount() == 3);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         testbuf<char> sb(" ");
@@ -105,6 +107,7 @@
         assert( is.eof());
         assert(!is.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" ");
         std::basic_istream<wchar_t> is(&sb);
@@ -121,6 +124,7 @@
         assert( is.eof());
         assert(!is.fail());
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
     {
         testbuf<char> sb;
@@ -138,6 +142,7 @@
         assert( is.eof());
         assert( is.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::basic_istream<wchar_t> is(&sb);
@@ -154,7 +159,8 @@
         assert( is.eof());
         assert( is.fail());
     }
-#endif
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
+#endif // TEST_HAS_NO_EXCEPTIONS
 
     return 0;
 }
diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/getline_pointer_size.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/getline_pointer_size.pass.cpp
index 44fa595..6e0d8b0 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/getline_pointer_size.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/getline_pointer_size.pass.cpp
@@ -71,6 +71,7 @@
         assert(std::string(s) == "");
         assert(is.gcount() == 0);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L"  \n    \n ");
         std::wistream is(&sb);
@@ -97,6 +98,7 @@
         assert(std::wstring(s) == L"");
         assert(is.gcount() == 0);
     }
+#endif
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         testbuf<char> sb(" ");
@@ -116,6 +118,7 @@
         assert(std::basic_string<char>(s) == " ");
         assert(is.gcount() == 1);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" ");
         std::basic_istream<wchar_t> is(&sb);
@@ -134,6 +137,7 @@
         assert(std::basic_string<wchar_t>(s) == L" ");
         assert(is.gcount() == 1);
     }
+#endif
 
     {
         testbuf<char> sb;
@@ -153,6 +157,7 @@
         assert(std::basic_string<char>(s) == "");
         assert(is.gcount() == 0);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::basic_istream<wchar_t> is(&sb);
@@ -172,6 +177,7 @@
         assert(is.gcount() == 0);
     }
 #endif
+#endif // TEST_HAS_NO_EXCEPTIONS
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/getline_pointer_size_chart.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/getline_pointer_size_chart.pass.cpp
index 72bc2a4..d07e74c 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/getline_pointer_size_chart.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/getline_pointer_size_chart.pass.cpp
@@ -71,6 +71,7 @@
         assert(std::string(s) == "");
         assert(is.gcount() == 0);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L"  *    * ");
         std::wistream is(&sb);
@@ -97,6 +98,7 @@
         assert(std::wstring(s) == L"");
         assert(is.gcount() == 0);
     }
+#endif
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         testbuf<char> sb(" ");
@@ -116,6 +118,7 @@
         assert(std::basic_string<char>(s) == " ");
         assert(is.gcount() == 1);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" ");
         std::basic_istream<wchar_t> is(&sb);
@@ -134,6 +137,7 @@
         assert(std::basic_string<wchar_t>(s) == L" ");
         assert(is.gcount() == 1);
     }
+#endif
 
     {
         testbuf<char> sb;
@@ -153,6 +157,7 @@
         assert(std::basic_string<char>(s) == "");
         assert(is.gcount() == 0);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::basic_istream<wchar_t> is(&sb);
@@ -172,6 +177,7 @@
         assert(is.gcount() == 0);
     }
 #endif
+#endif // TEST_HAS_NO_EXCEPTIONS
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/ignore.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/ignore.pass.cpp
index 0d0b4a8..0f1edcd 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/ignore.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/ignore.pass.cpp
@@ -60,6 +60,7 @@
         assert(!is.fail());
         assert(is.gcount() == 6);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" 1\n2345\n6");
         std::wistream is(&sb);
@@ -76,6 +77,7 @@
         assert(!is.fail());
         assert(is.gcount() == 6);
     }
+#endif
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         testbuf<char> sb(" ");
@@ -92,6 +94,7 @@
         assert( is.eof());
         assert(!is.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" ");
         std::basic_istream<wchar_t> is(&sb);
@@ -108,6 +111,7 @@
         assert(!is.fail());
     }
 #endif
+#endif // TEST_HAS_NO_EXCEPTIONS
 
     return 0;
 }
diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/peek.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/peek.pass.cpp
index be9600c..2ca7016 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/peek.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/peek.pass.cpp
@@ -55,6 +55,7 @@
         assert(!is.fail());
         assert(is.gcount() == 0);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" 1\n2345\n6");
         std::wistream is(&sb);
@@ -68,6 +69,7 @@
         assert(!is.fail());
         assert(is.gcount() == 0);
     }
+#endif
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         testbuf<char> sb;
@@ -84,6 +86,7 @@
         assert( is.eof());
         assert(!is.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::basic_istream<wchar_t> is(&sb);
@@ -100,6 +103,7 @@
         assert(!is.fail());
     }
 #endif
+#endif // TEST_HAS_NO_EXCEPTIONS
 
     return 0;
 }
diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/putback.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/putback.pass.cpp
index 588c0a6..cb57b89 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/putback.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/putback.pass.cpp
@@ -64,6 +64,7 @@
         assert(is.bad());
         assert(is.gcount() == 0);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" 123456789");
         std::wistream is(&sb);
@@ -87,6 +88,7 @@
         assert(is.bad());
         assert(is.gcount() == 0);
     }
+#endif
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         testbuf<char> sb;
@@ -103,6 +105,7 @@
         assert(!is.eof());
         assert( is.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::basic_istream<wchar_t> is(&sb);
@@ -119,6 +122,7 @@
         assert( is.fail());
     }
 #endif
+#endif // TEST_HAS_NO_EXCEPTIONS
 
     return 0;
 }
diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/read.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/read.pass.cpp
index 2e6c2a2..5f8c455 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/read.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/read.pass.cpp
@@ -61,6 +61,7 @@
         assert( is.fail());
         assert(is.gcount() == 0);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" 123456789");
         std::wistream is(&sb);
@@ -80,6 +81,7 @@
         assert( is.fail());
         assert(is.gcount() == 0);
     }
+#endif
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         testbuf<char> sb;
@@ -97,6 +99,7 @@
         assert( is.eof());
         assert( is.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::basic_istream<wchar_t> is(&sb);
@@ -114,6 +117,7 @@
         assert( is.fail());
     }
 #endif
+#endif // TEST_HAS_NO_EXCEPTIONS
 
     return 0;
 }
diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/readsome.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/readsome.pass.cpp
index e2fe378..3c523bb 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/readsome.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/readsome.pass.cpp
@@ -62,6 +62,7 @@
         assert(std::string(s, 1) == "0");
         assert(is.readsome(s, 5) == 0);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" 1234567890");
         std::wistream is(&sb);
@@ -83,6 +84,7 @@
         assert(std::wstring(s, 1) == L"0");
         assert(is.readsome(s, 5) == 0);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg.pass.cpp
index fc442d4..7bbbf94 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg.pass.cpp
@@ -56,6 +56,7 @@
         is.seekg(-1);
         assert(is.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" 123456789");
         std::wistream is(&sb);
@@ -64,6 +65,7 @@
         is.seekg(-1);
         assert(is.fail());
     }
+#endif
     {
         testbuf<char> sb(" 123456789");
         std::istream is(&sb);
diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg_off.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg_off.pass.cpp
index d9412bf..a5aaf21 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg_off.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg_off.pass.cpp
@@ -64,6 +64,7 @@
         assert(is.fail());
         assert(seekoff_called == 2);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" 123456789");
         std::wistream is(&sb);
@@ -74,6 +75,7 @@
         assert(is.fail());
         assert(seekoff_called == 4);
     }
+#endif
     {
         testbuf<char> sb(" 123456789");
         std::istream is(&sb);
diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/sync.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/sync.pass.cpp
index bc808fb..ec1195d 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/sync.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/sync.pass.cpp
@@ -91,12 +91,14 @@
         assert(is.sync() == 0);
         assert(sync_called == 1);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" 123456789");
         std::wistream is(&sb);
         assert(is.sync() == 0);
         assert(sync_called == 2);
     }
+#endif
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         throwing_testbuf<char> sb(" 123456789");
@@ -113,6 +115,7 @@
         assert( is.fail());
         assert(threw);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         throwing_testbuf<wchar_t> sb(L" 123456789");
         std::basic_istream<wchar_t> is(&sb);
@@ -129,6 +132,7 @@
         assert(threw);
     }
 #endif
+#endif // TEST_HAS_NO_EXCEPTIONS
 
     return 0;
 }
diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/tellg.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/tellg.pass.cpp
index 32a7787..816e400 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/tellg.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/tellg.pass.cpp
@@ -56,11 +56,13 @@
         std::istream is(&sb);
         assert(is.tellg() == 5);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" 123456789");
         std::wistream is(&sb);
         assert(is.tellg() == 5);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/unget.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/unget.pass.cpp
index b48ff86..eddfaa8 100644
--- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/unget.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/unget.pass.cpp
@@ -60,6 +60,7 @@
         assert(is.bad());
         assert(is.gcount() == 0);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L" 123456789");
         std::wistream is(&sb);
@@ -79,6 +80,7 @@
         assert(is.bad());
         assert(is.gcount() == 0);
     }
+#endif
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         testbuf<char> sb;
@@ -95,6 +97,7 @@
         assert(!is.eof());
         assert( is.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::basic_istream<wchar_t> is(&sb);
@@ -111,6 +114,7 @@
         assert( is.fail());
     }
 #endif
+#endif // TEST_HAS_NO_EXCEPTIONS
 
     return 0;
 }
diff --git a/test/std/input.output/iostream.format/input.streams/istream/istream.assign/member_swap.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream/istream.assign/member_swap.pass.cpp
index 0e6cdbb..64ddcf2 100644
--- a/test/std/input.output/iostream.format/input.streams/istream/istream.assign/member_swap.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream/istream.assign/member_swap.pass.cpp
@@ -60,6 +60,7 @@
         assert(is2.precision() == 6);
         assert(is2.getloc().name() == "C");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb1;
         testbuf<wchar_t> sb2;
@@ -83,6 +84,7 @@
         assert(is2.precision() == 6);
         assert(is2.getloc().name() == "C");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/input.streams/istream/istream.assign/move_assign.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream/istream.assign/move_assign.pass.cpp
index 7899c63..fd79726 100644
--- a/test/std/input.output/iostream.format/input.streams/istream/istream.assign/move_assign.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream/istream.assign/move_assign.pass.cpp
@@ -63,6 +63,7 @@
         assert(is2.precision() == 6);
         assert(is2.getloc().name() == "C");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb1;
         testbuf<wchar_t> sb2;
@@ -86,6 +87,7 @@
         assert(is2.precision() == 6);
         assert(is2.getloc().name() == "C");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/input.streams/istream/istream.cons/move.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream/istream.cons/move.pass.cpp
index fb071ba..4f46ff5 100644
--- a/test/std/input.output/iostream.format/input.streams/istream/istream.cons/move.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream/istream.cons/move.pass.cpp
@@ -54,6 +54,7 @@
         assert(is.precision() == 6);
         assert(is.getloc().name() == "C");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         test_istream<wchar_t> is1(&sb);
@@ -70,6 +71,7 @@
         assert(is.precision() == 6);
         assert(is.getloc().name() == "C");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/input.streams/istream/istream.cons/streambuf.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream/istream.cons/streambuf.pass.cpp
index 669c1c9..b2b428e 100644
--- a/test/std/input.output/iostream.format/input.streams/istream/istream.cons/streambuf.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream/istream.cons/streambuf.pass.cpp
@@ -40,6 +40,7 @@
         assert(is.getloc().name() == "C");
         assert(is.gcount() == 0);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::basic_istream<wchar_t> is(&sb);
@@ -53,6 +54,7 @@
         assert(is.getloc().name() == "C");
         assert(is.gcount() == 0);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/input.streams/istream/istream_sentry/ctor.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream/istream_sentry/ctor.pass.cpp
index f4e8437..fa094d7 100644
--- a/test/std/input.output/iostream.format/input.streams/istream/istream_sentry/ctor.pass.cpp
+++ b/test/std/input.output/iostream.format/input.streams/istream/istream_sentry/ctor.pass.cpp
@@ -62,14 +62,6 @@
         assert(sync_called == 0);
     }
     {
-        std::wistream is((testbuf<wchar_t>*)0);
-        std::wistream::sentry sen(is, true);
-        assert(!(bool)sen);
-        assert(!is.good());
-        assert(is.gcount() == 0);
-        assert(sync_called == 0);
-    }
-    {
         testbuf<char> sb("   123");
         std::istream is(&sb);
         std::istream::sentry sen(is, true);
@@ -80,16 +72,6 @@
         assert(sb.gptr() == sb.eback());
     }
     {
-        testbuf<wchar_t> sb(L"   123");
-        std::wistream is(&sb);
-        std::wistream::sentry sen(is, true);
-        assert((bool)sen);
-        assert(is.good());
-        assert(is.gcount() == 0);
-        assert(sync_called == 0);
-        assert(sb.gptr() == sb.eback());
-    }
-    {
         testbuf<char> sb("   123");
         std::istream is(&sb);
         std::istream::sentry sen(is);
@@ -99,15 +81,6 @@
         assert(sb.gptr() == sb.eback() + 3);
     }
     {
-        testbuf<wchar_t> sb(L"   123");
-        std::wistream is(&sb);
-        std::wistream::sentry sen(is);
-        assert((bool)sen);
-        assert(is.good());
-        assert(sync_called == 0);
-        assert(sb.gptr() == sb.eback() + 3);
-    }
-    {
         testbuf<char> sb("      ");
         std::istream is(&sb);
         std::istream::sentry sen(is);
@@ -127,5 +100,35 @@
         assert(sb.gptr() == sb.eback());
     }
 
-  return 0;
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    {
+        std::wistream is((testbuf<wchar_t>*)0);
+        std::wistream::sentry sen(is, true);
+        assert(!(bool)sen);
+        assert(!is.good());
+        assert(is.gcount() == 0);
+        assert(sync_called == 0);
+    }
+    {
+        testbuf<wchar_t> sb(L"   123");
+        std::wistream is(&sb);
+        std::wistream::sentry sen(is, true);
+        assert((bool)sen);
+        assert(is.good());
+        assert(is.gcount() == 0);
+        assert(sync_called == 0);
+        assert(sb.gptr() == sb.eback());
+    }
+    {
+        testbuf<wchar_t> sb(L"   123");
+        std::wistream is(&sb);
+        std::wistream::sentry sen(is);
+        assert((bool)sen);
+        assert(is.good());
+        assert(sync_called == 0);
+        assert(sb.gptr() == sb.eback() + 3);
+    }
+#endif
+
+    return 0;
 }
diff --git a/test/std/input.output/iostream.format/output.streams/ostream.assign/member_swap.pass.cpp b/test/std/input.output/iostream.format/output.streams/ostream.assign/member_swap.pass.cpp
index 0a82796..032d2cf 100644
--- a/test/std/input.output/iostream.format/output.streams/ostream.assign/member_swap.pass.cpp
+++ b/test/std/input.output/iostream.format/output.streams/ostream.assign/member_swap.pass.cpp
@@ -60,6 +60,7 @@
         assert(os2.precision() == 6);
         assert(os2.getloc().name() == "C");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb1;
         testbuf<wchar_t> sb2;
@@ -83,6 +84,7 @@
         assert(os2.precision() == 6);
         assert(os2.getloc().name() == "C");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/output.streams/ostream.assign/move_assign.pass.cpp b/test/std/input.output/iostream.format/output.streams/ostream.assign/move_assign.pass.cpp
index 8fcb0c2..dbac838 100644
--- a/test/std/input.output/iostream.format/output.streams/ostream.assign/move_assign.pass.cpp
+++ b/test/std/input.output/iostream.format/output.streams/ostream.assign/move_assign.pass.cpp
@@ -63,6 +63,7 @@
         assert(os2.precision() == 6);
         assert(os2.getloc().name() == "C");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb1;
         testbuf<wchar_t> sb2;
@@ -86,6 +87,7 @@
         assert(os2.precision() == 6);
         assert(os2.getloc().name() == "C");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/output.streams/ostream.cons/move.pass.cpp b/test/std/input.output/iostream.format/output.streams/ostream.cons/move.pass.cpp
index 73991b3..d2de7b0 100644
--- a/test/std/input.output/iostream.format/output.streams/ostream.cons/move.pass.cpp
+++ b/test/std/input.output/iostream.format/output.streams/ostream.cons/move.pass.cpp
@@ -54,6 +54,7 @@
         assert(os.precision() == 6);
         assert(os.getloc().name() == "C");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         test_ostream<wchar_t> os1(&sb);
@@ -68,6 +69,7 @@
         assert(os.precision() == 6);
         assert(os.getloc().name() == "C");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/output.streams/ostream.cons/streambuf.pass.cpp b/test/std/input.output/iostream.format/output.streams/ostream.cons/streambuf.pass.cpp
index d3c8375..1c38a68 100644
--- a/test/std/input.output/iostream.format/output.streams/ostream.cons/streambuf.pass.cpp
+++ b/test/std/input.output/iostream.format/output.streams/ostream.cons/streambuf.pass.cpp
@@ -39,6 +39,7 @@
         assert(os.precision() == 6);
         assert(os.getloc().name() == "C");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::basic_ostream<wchar_t> os(&sb);
@@ -51,6 +52,7 @@
         assert(os.precision() == 6);
         assert(os.getloc().name() == "C");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.character/CharT.pass.cpp b/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.character/CharT.pass.cpp
index a04a80c..6adf30f 100644
--- a/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.character/CharT.pass.cpp
+++ b/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.character/CharT.pass.cpp
@@ -14,6 +14,8 @@
 // template<class charT, class traits>
 //   basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>& out, charT c);
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <ostream>
 #include <cassert>
 
diff --git a/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.character/CharT_pointer.pass.cpp b/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.character/CharT_pointer.pass.cpp
index 95615a9..1ce962c 100644
--- a/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.character/CharT_pointer.pass.cpp
+++ b/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.character/CharT_pointer.pass.cpp
@@ -14,6 +14,8 @@
 // template<class charT, class traits>
 //   basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>& out, const charT* s);
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <ostream>
 #include <cassert>
 
diff --git a/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.character/char_to_wide.pass.cpp b/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.character/char_to_wide.pass.cpp
index 7d97726..c1e18ea 100644
--- a/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.character/char_to_wide.pass.cpp
+++ b/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.character/char_to_wide.pass.cpp
@@ -14,6 +14,8 @@
 // template<class charT, class traits>
 //   basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>& out, char c);
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <ostream>
 #include <cassert>
 
diff --git a/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.character/char_to_wide_pointer.pass.cpp b/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.character/char_to_wide_pointer.pass.cpp
index 0587f6f..98c0153 100644
--- a/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.character/char_to_wide_pointer.pass.cpp
+++ b/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.character/char_to_wide_pointer.pass.cpp
@@ -14,6 +14,8 @@
 // template<class charT, class traits>
 //   basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>& out, const char* s);
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <ostream>
 #include <cassert>
 
diff --git a/test/std/input.output/iostream.format/output.streams/ostream.manip/endl.pass.cpp b/test/std/input.output/iostream.format/output.streams/ostream.manip/endl.pass.cpp
index 71f9e8d..bedbe6c 100644
--- a/test/std/input.output/iostream.format/output.streams/ostream.manip/endl.pass.cpp
+++ b/test/std/input.output/iostream.format/output.streams/ostream.manip/endl.pass.cpp
@@ -70,6 +70,7 @@
         assert(sync_called == 1);
         assert(os.good());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::wostream os(&sb);
@@ -78,6 +79,7 @@
         assert(sync_called == 2);
         assert(os.good());
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/output.streams/ostream.manip/ends.pass.cpp b/test/std/input.output/iostream.format/output.streams/ostream.manip/ends.pass.cpp
index 94135f7..e4c0cd6 100644
--- a/test/std/input.output/iostream.format/output.streams/ostream.manip/ends.pass.cpp
+++ b/test/std/input.output/iostream.format/output.streams/ostream.manip/ends.pass.cpp
@@ -61,6 +61,7 @@
         assert(sb.str().back() == 0);
         assert(os.good());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::wostream os(&sb);
@@ -69,6 +70,7 @@
         assert(sb.str().back() == 0);
         assert(os.good());
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/output.streams/ostream.manip/flush.pass.cpp b/test/std/input.output/iostream.format/output.streams/ostream.manip/flush.pass.cpp
index 6fcba87..20d541e 100644
--- a/test/std/input.output/iostream.format/output.streams/ostream.manip/flush.pass.cpp
+++ b/test/std/input.output/iostream.format/output.streams/ostream.manip/flush.pass.cpp
@@ -49,6 +49,7 @@
         assert(sync_called == 1);
         assert(os.good());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::wostream os(&sb);
@@ -56,6 +57,7 @@
         assert(sync_called == 2);
         assert(os.good());
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/output.streams/ostream.rvalue/rvalue.pass.cpp b/test/std/input.output/iostream.format/output.streams/ostream.rvalue/rvalue.pass.cpp
index d71855a..8ef9b6c 100644
--- a/test/std/input.output/iostream.format/output.streams/ostream.rvalue/rvalue.pass.cpp
+++ b/test/std/input.output/iostream.format/output.streams/ostream.rvalue/rvalue.pass.cpp
@@ -67,6 +67,7 @@
         assert(&result == &os);
         assert(sb.str() == "123");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::wostream os(&sb);
@@ -75,6 +76,7 @@
         assert(&result == &os);
         assert(sb.str() == L"123");
     }
+#endif
 
     return 0;
 }
diff --git a/test/std/input.output/iostream.format/output.streams/ostream.unformatted/put.pass.cpp b/test/std/input.output/iostream.format/output.streams/ostream.unformatted/put.pass.cpp
index 08a7018..e52a1a4 100644
--- a/test/std/input.output/iostream.format/output.streams/ostream.unformatted/put.pass.cpp
+++ b/test/std/input.output/iostream.format/output.streams/ostream.unformatted/put.pass.cpp
@@ -53,6 +53,21 @@
 int main(int, char**)
 {
     {
+        std::ostream os((std::streambuf*)0);
+        char c = 'a';
+        os.put(c);
+        assert(os.bad());
+    }
+    {
+        testbuf<char> sb;
+        std::ostream os(&sb);
+        char c = 'a';
+        os.put(c);
+        assert(sb.str() == "a");
+        assert(os.good());
+    }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    {
         std::wostream os((std::wstreambuf*)0);
         wchar_t c = L'a';
         os.put(c);
@@ -66,14 +81,7 @@
         assert(sb.str() == L"a");
         assert(os.good());
     }
-    {
-        testbuf<char> sb;
-        std::ostream os(&sb);
-        char c = 'a';
-        os.put(c);
-        assert(sb.str() == "a");
-        assert(os.good());
-    }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/output.streams/ostream.unformatted/write.pass.cpp b/test/std/input.output/iostream.format/output.streams/ostream.unformatted/write.pass.cpp
index c81c770..b0f3889 100644
--- a/test/std/input.output/iostream.format/output.streams/ostream.unformatted/write.pass.cpp
+++ b/test/std/input.output/iostream.format/output.streams/ostream.unformatted/write.pass.cpp
@@ -53,6 +53,21 @@
 int main(int, char**)
 {
     {
+        std::ostream os((std::streambuf*)0);
+        const char s[] = "123456790";
+        os.write(s, sizeof(s)/sizeof(s[0])-1);
+        assert(os.bad());
+    }
+    {
+        testbuf<char> sb;
+        std::ostream os(&sb);
+        const char s[] = "123456790";
+        os.write(s, sizeof(s)/sizeof(s[0])-1);
+        assert(sb.str() == s);
+        assert(os.good());
+    }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    {
         std::wostream os((std::wstreambuf*)0);
         const wchar_t s[] = L"123456790";
         os.write(s, sizeof(s)/sizeof(s[0])-1);
@@ -66,14 +81,7 @@
         assert(os.good());
         assert(sb.str() == s);
     }
-    {
-        testbuf<char> sb;
-        std::ostream os(&sb);
-        const char s[] = "123456790";
-        os.write(s, sizeof(s)/sizeof(s[0])-1);
-        assert(sb.str() == s);
-        assert(os.good());
-    }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/quoted.manip/quoted.pass.cpp b/test/std/input.output/iostream.format/quoted.manip/quoted.pass.cpp
index 854e271..ef43339 100644
--- a/test/std/input.output/iostream.format/quoted.manip/quoted.pass.cpp
+++ b/test/std/input.output/iostream.format/quoted.manip/quoted.pass.cpp
@@ -132,10 +132,12 @@
     round_trip_d  (  "", 'q' );
     round_trip_e  (  "", 'q' );
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     round_trip    ( L"" );
     round_trip_ws ( L"" );
     round_trip_d  ( L"", 'q' );
     round_trip_e  ( L"", 'q' );
+#endif
 
     round_trip    (  "Hi" );
     round_trip_ws (  "Hi" );
@@ -144,34 +146,47 @@
     assert ( quote ( "Hi", '!' ) == "!Hi!" );
     assert ( quote ( "Hi!", '!' ) == R"(!Hi\!!)" );
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     round_trip    ( L"Hi" );
     round_trip_ws ( L"Hi" );
     round_trip_d  ( L"Hi", '!' );
     round_trip_e  ( L"Hi", '!' );
     assert ( quote ( L"Hi", '!' )  == L"!Hi!" );
     assert ( quote ( L"Hi!", '!' ) == LR"(!Hi\!!)" );
+#endif
 
     round_trip    (  "Hi Mom" );
     round_trip_ws (  "Hi Mom" );
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     round_trip    ( L"Hi Mom" );
     round_trip_ws ( L"Hi Mom" );
+#endif
 
     assert ( quote (  "" )  ==  "\"\"" );
-    assert ( quote ( L"" )  == L"\"\"" );
     assert ( quote (  "a" ) ==  "\"a\"" );
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    assert ( quote ( L"" )  == L"\"\"" );
     assert ( quote ( L"a" ) == L"\"a\"" );
+#endif
 
-//  missing end quote - must not hang
+    // missing end quote - must not hang
     assert ( unquote (  "\"abc" ) ==  "abc" );
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     assert ( unquote ( L"\"abc" ) == L"abc" );
+#endif
 
     assert ( unquote (  "abc" ) == "abc" ); // no delimiter
-    assert ( unquote ( L"abc" ) == L"abc" ); // no delimiter
     assert ( unquote (  "abc def" ) ==  "abc" ); // no delimiter
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    assert ( unquote ( L"abc" ) == L"abc" ); // no delimiter
     assert ( unquote ( L"abc def" ) == L"abc" ); // no delimiter
+#endif
 
     assert ( unquote (  "" ) ==  "" ); // nothing there
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     assert ( unquote ( L"" ) == L"" ); // nothing there
+#endif
+
     test_padding ();
 
     return 0;
diff --git a/test/std/input.output/iostream.format/quoted.manip/quoted_char.verify.cpp b/test/std/input.output/iostream.format/quoted.manip/quoted_char.verify.cpp
index 9340edb..29a084e 100644
--- a/test/std/input.output/iostream.format/quoted.manip/quoted_char.verify.cpp
+++ b/test/std/input.output/iostream.format/quoted.manip/quoted_char.verify.cpp
@@ -11,6 +11,7 @@
 // quoted
 
 // UNSUPPORTED: c++03, c++11
+// XFAIL: libcpp-has-no-wide-characters
 
 #include <iomanip>
 #include <sstream>
diff --git a/test/std/input.output/iostream.format/std.manip/resetiosflags.pass.cpp b/test/std/input.output/iostream.format/std.manip/resetiosflags.pass.cpp
index 1603d9f..a61357e 100644
--- a/test/std/input.output/iostream.format/std.manip/resetiosflags.pass.cpp
+++ b/test/std/input.output/iostream.format/std.manip/resetiosflags.pass.cpp
@@ -40,6 +40,7 @@
         os << std::resetiosflags(std::ios_base::skipws);
         assert(!(os.flags() & std::ios_base::skipws));
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::wistream is(&sb);
@@ -54,6 +55,7 @@
         os << std::resetiosflags(std::ios_base::skipws);
         assert(!(os.flags() & std::ios_base::skipws));
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/std.manip/setbase.pass.cpp b/test/std/input.output/iostream.format/std.manip/setbase.pass.cpp
index be5edf8..0e8b13c 100644
--- a/test/std/input.output/iostream.format/std.manip/setbase.pass.cpp
+++ b/test/std/input.output/iostream.format/std.manip/setbase.pass.cpp
@@ -50,6 +50,7 @@
         os << std::setbase(15);
         assert((os.flags() & std::ios_base::basefield) == 0);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::wistream is(&sb);
@@ -74,6 +75,7 @@
         os << std::setbase(15);
         assert((os.flags() & std::ios_base::basefield) == 0);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/std.manip/setfill.pass.cpp b/test/std/input.output/iostream.format/std.manip/setfill.pass.cpp
index 68002b9..3413743 100644
--- a/test/std/input.output/iostream.format/std.manip/setfill.pass.cpp
+++ b/test/std/input.output/iostream.format/std.manip/setfill.pass.cpp
@@ -31,12 +31,14 @@
         os << std::setfill('*');
         assert(os.fill() == '*');
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::wostream os(&sb);
         os << std::setfill(L'*');
         assert(os.fill() == L'*');
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/std.manip/setiosflags.pass.cpp b/test/std/input.output/iostream.format/std.manip/setiosflags.pass.cpp
index 8b249f4..9ed8b9f 100644
--- a/test/std/input.output/iostream.format/std.manip/setiosflags.pass.cpp
+++ b/test/std/input.output/iostream.format/std.manip/setiosflags.pass.cpp
@@ -40,6 +40,7 @@
         os << std::setiosflags(std::ios_base::oct);
         assert(os.flags() & std::ios_base::oct);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::wistream is(&sb);
@@ -54,6 +55,7 @@
         os << std::setiosflags(std::ios_base::oct);
         assert(os.flags() & std::ios_base::oct);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/std.manip/setprecision.pass.cpp b/test/std/input.output/iostream.format/std.manip/setprecision.pass.cpp
index 7063cf3..0fa289b 100644
--- a/test/std/input.output/iostream.format/std.manip/setprecision.pass.cpp
+++ b/test/std/input.output/iostream.format/std.manip/setprecision.pass.cpp
@@ -38,6 +38,7 @@
         os << std::setprecision(10);
         assert(os.precision() == 10);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::wistream is(&sb);
@@ -50,6 +51,7 @@
         os << std::setprecision(10);
         assert(os.precision() == 10);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.format/std.manip/setw.pass.cpp b/test/std/input.output/iostream.format/std.manip/setw.pass.cpp
index 346d5f4..565dadd 100644
--- a/test/std/input.output/iostream.format/std.manip/setw.pass.cpp
+++ b/test/std/input.output/iostream.format/std.manip/setw.pass.cpp
@@ -8,7 +8,7 @@
 
 // <iomanip>
 
-// T6 setw(int n);
+// <unspecified> setw(int n);
 
 #include <iomanip>
 #include <istream>
@@ -38,6 +38,7 @@
         os << std::setw(10);
         assert(os.width() == 10);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb;
         std::wistream is(&sb);
@@ -50,6 +51,7 @@
         os << std::setw(10);
         assert(os.width() == 10);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.forward/iosfwd.pass.cpp b/test/std/input.output/iostream.forward/iosfwd.pass.cpp
index 3bf880a..b6ef60d 100644
--- a/test/std/input.output/iostream.forward/iosfwd.pass.cpp
+++ b/test/std/input.output/iostream.forward/iosfwd.pass.cpp
@@ -9,10 +9,13 @@
 // <iosfwd>
 
 #include <iosfwd>
-#include <cwchar>  // for mbstate_t
 
 #include "test_macros.h"
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+#   include <cwchar>
+#endif
+
 template <class Ptr> void test()
 {
     Ptr p = 0;
@@ -22,71 +25,105 @@
 int main(int, char**)
 {
     test<std::char_traits<char>*          >();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<std::char_traits<wchar_t>*       >();
+#endif
     test<std::char_traits<unsigned short>*>();
 
     test<std::basic_ios<char>*          >();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<std::basic_ios<wchar_t>*       >();
+#endif
     test<std::basic_ios<unsigned short>*>();
 
     test<std::basic_streambuf<char>*          >();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<std::basic_streambuf<wchar_t>*       >();
+#endif
     test<std::basic_streambuf<unsigned short>*>();
 
     test<std::basic_istream<char>*          >();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<std::basic_istream<wchar_t>*       >();
+#endif
     test<std::basic_istream<unsigned short>*>();
 
     test<std::basic_ostream<char>*          >();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<std::basic_ostream<wchar_t>*       >();
+#endif
     test<std::basic_ostream<unsigned short>*>();
 
     test<std::basic_iostream<char>*          >();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<std::basic_iostream<wchar_t>*       >();
+#endif
     test<std::basic_iostream<unsigned short>*>();
 
     test<std::basic_stringbuf<char>*          >();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<std::basic_stringbuf<wchar_t>*       >();
+#endif
     test<std::basic_stringbuf<unsigned short>*>();
 
     test<std::basic_istringstream<char>*          >();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<std::basic_istringstream<wchar_t>*       >();
+#endif
     test<std::basic_istringstream<unsigned short>*>();
 
     test<std::basic_ostringstream<char>*          >();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<std::basic_ostringstream<wchar_t>*       >();
+#endif
     test<std::basic_ostringstream<unsigned short>*>();
 
     test<std::basic_stringstream<char>*          >();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<std::basic_stringstream<wchar_t>*       >();
+#endif
     test<std::basic_stringstream<unsigned short>*>();
 
     test<std::basic_filebuf<char>*          >();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<std::basic_filebuf<wchar_t>*       >();
+#endif
     test<std::basic_filebuf<unsigned short>*>();
 
     test<std::basic_ifstream<char>*          >();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<std::basic_ifstream<wchar_t>*       >();
+#endif
     test<std::basic_ifstream<unsigned short>*>();
 
     test<std::basic_ofstream<char>*          >();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<std::basic_ofstream<wchar_t>*       >();
+#endif
     test<std::basic_ofstream<unsigned short>*>();
 
     test<std::basic_fstream<char>*          >();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<std::basic_fstream<wchar_t>*       >();
+#endif
     test<std::basic_fstream<unsigned short>*>();
 
     test<std::istreambuf_iterator<char>*          >();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<std::istreambuf_iterator<wchar_t>*       >();
+#endif
     test<std::istreambuf_iterator<unsigned short>*>();
 
     test<std::ostreambuf_iterator<char>*          >();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<std::ostreambuf_iterator<wchar_t>*       >();
+#endif
     test<std::ostreambuf_iterator<unsigned short>*>();
 
     test<std::ios* >();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<std::wios*>();
+#endif
 
     test<std::streambuf*>();
     test<std::istream*  >();
@@ -103,6 +140,7 @@
     test<std::ofstream*>();
     test<std::fstream* >();
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<std::wstreambuf*>();
     test<std::wistream*  >();
     test<std::wostream*  >();
@@ -117,10 +155,13 @@
     test<std::wifstream*>();
     test<std::wofstream*>();
     test<std::wfstream* >();
+#endif
 
     test<std::fpos<std::mbstate_t>*>();
     test<std::streampos*           >();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<std::wstreampos*          >();
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/iostream.objects/init.pass.cpp b/test/std/input.output/iostream.objects/init.pass.cpp
index e53228a..293d105 100644
--- a/test/std/input.output/iostream.objects/init.pass.cpp
+++ b/test/std/input.output/iostream.objects/init.pass.cpp
@@ -25,37 +25,24 @@
 #include <cstring>
 #include <iostream>
 
+#include "test_macros.h"
+
 struct Checker {
     char *cerr_mem_dump;
     char *cin_mem_dump;
     char *cout_mem_dump;
     char *clog_mem_dump;
 
-    char *wcerr_mem_dump;
-    char *wcin_mem_dump;
-    char *wcout_mem_dump;
-    char *wclog_mem_dump;
-
     Checker()
         : cerr_mem_dump(new char[sizeof(std::cerr)])
         , cin_mem_dump(new char[sizeof(std::cin)])
         , cout_mem_dump(new char[sizeof(std::cout)])
         , clog_mem_dump(new char[sizeof(std::clog)])
-
-        , wcerr_mem_dump(new char[sizeof(std::wcerr)])
-        , wcin_mem_dump(new char[sizeof(std::wcin)])
-        , wcout_mem_dump(new char[sizeof(std::wcout)])
-        , wclog_mem_dump(new char[sizeof(std::wclog)])
      {
         std::memcpy(cerr_mem_dump, (char*)&std::cerr, sizeof(std::cerr));
         std::memcpy(cin_mem_dump, (char*)&std::cin, sizeof(std::cin));
         std::memcpy(cout_mem_dump, (char*)&std::cout, sizeof(std::cout));
         std::memcpy(clog_mem_dump, (char*)&std::clog, sizeof(std::clog));
-
-        std::memcpy(wcerr_mem_dump, (char*)&std::wcerr, sizeof(std::wcerr));
-        std::memcpy(wcin_mem_dump, (char*)&std::wcin, sizeof(std::wcin));
-        std::memcpy(wcout_mem_dump, (char*)&std::wcout, sizeof(std::wcout));
-        std::memcpy(wclog_mem_dump, (char*)&std::wclog, sizeof(std::wclog));
     }
 
     ~Checker() {
@@ -63,7 +50,30 @@
         delete[] cin_mem_dump;
         delete[] cout_mem_dump;
         delete[] clog_mem_dump;
+    }
+};
+static Checker check;
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+struct WideChecker {
+    char *wcerr_mem_dump;
+    char *wcin_mem_dump;
+    char *wcout_mem_dump;
+    char *wclog_mem_dump;
+
+    WideChecker()
+        : wcerr_mem_dump(new char[sizeof(std::wcerr)])
+        , wcin_mem_dump(new char[sizeof(std::wcin)])
+        , wcout_mem_dump(new char[sizeof(std::wcout)])
+        , wclog_mem_dump(new char[sizeof(std::wclog)])
+     {
+        std::memcpy(wcerr_mem_dump, (char*)&std::wcerr, sizeof(std::wcerr));
+        std::memcpy(wcin_mem_dump, (char*)&std::wcin, sizeof(std::wcin));
+        std::memcpy(wcout_mem_dump, (char*)&std::wcout, sizeof(std::wcout));
+        std::memcpy(wclog_mem_dump, (char*)&std::wclog, sizeof(std::wclog));
+    }
+
+    ~WideChecker() {
         delete[] wcerr_mem_dump;
         delete[] wcin_mem_dump;
         delete[] wcout_mem_dump;
@@ -71,7 +81,8 @@
     }
 };
 
-static Checker check;
+static WideChecker wide_check;
+#endif
 
 int main(int, char**) {
     assert(std::memcmp(check.cerr_mem_dump, (char const*)&std::cerr, sizeof(std::cerr)) == 0);
@@ -79,9 +90,11 @@
     assert(std::memcmp(check.cout_mem_dump, (char const*)&std::cout, sizeof(std::cout)) == 0);
     assert(std::memcmp(check.clog_mem_dump, (char const*)&std::clog, sizeof(std::clog)) == 0);
 
-    assert(std::memcmp(check.wcerr_mem_dump, (char const*)&std::wcerr, sizeof(std::wcerr)) == 0);
-    assert(std::memcmp(check.wcin_mem_dump, (char const*)&std::wcin, sizeof(std::wcin)) == 0);
-    assert(std::memcmp(check.wcout_mem_dump, (char const*)&std::wcout, sizeof(std::wcout)) == 0);
-    assert(std::memcmp(check.wclog_mem_dump, (char const*)&std::wclog, sizeof(std::wclog)) == 0);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    assert(std::memcmp(wide_check.wcerr_mem_dump, (char const*)&std::wcerr, sizeof(std::wcerr)) == 0);
+    assert(std::memcmp(wide_check.wcin_mem_dump, (char const*)&std::wcin, sizeof(std::wcin)) == 0);
+    assert(std::memcmp(wide_check.wcout_mem_dump, (char const*)&std::wcout, sizeof(std::wcout)) == 0);
+    assert(std::memcmp(wide_check.wclog_mem_dump, (char const*)&std::wclog, sizeof(std::wclog)) == 0);
+#endif
     return 0;
 }
diff --git a/test/std/input.output/iostream.objects/wide.stream.objects/wcerr.sh.cpp b/test/std/input.output/iostream.objects/wide.stream.objects/wcerr.sh.cpp
index 7e8e570..8ff1666 100644
--- a/test/std/input.output/iostream.objects/wide.stream.objects/wcerr.sh.cpp
+++ b/test/std/input.output/iostream.objects/wide.stream.objects/wcerr.sh.cpp
@@ -10,6 +10,7 @@
 
 // istream wcerr;
 
+// XFAIL: libcpp-has-no-wide-characters
 // XFAIL: LIBCXX-WINDOWS-FIXME
 
 // FILE_DEPENDENCIES: ../check-stderr.sh
diff --git a/test/std/input.output/iostream.objects/wide.stream.objects/wcin.sh.cpp b/test/std/input.output/iostream.objects/wide.stream.objects/wcin.sh.cpp
index aee8d79..af7107c 100644
--- a/test/std/input.output/iostream.objects/wide.stream.objects/wcin.sh.cpp
+++ b/test/std/input.output/iostream.objects/wide.stream.objects/wcin.sh.cpp
@@ -10,6 +10,8 @@
 
 // istream wcin;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 // FILE_DEPENDENCIES: ../send-stdin.sh
 // RUN: %{build}
 // RUN: %{exec} bash send-stdin.sh "%t.exe" "1234"
diff --git a/test/std/input.output/iostream.objects/wide.stream.objects/wclog.sh.cpp b/test/std/input.output/iostream.objects/wide.stream.objects/wclog.sh.cpp
index 07c6a25..1a5b200 100644
--- a/test/std/input.output/iostream.objects/wide.stream.objects/wclog.sh.cpp
+++ b/test/std/input.output/iostream.objects/wide.stream.objects/wclog.sh.cpp
@@ -10,6 +10,7 @@
 
 // istream wclog;
 
+// XFAIL: libcpp-has-no-wide-characters
 // XFAIL: LIBCXX-WINDOWS-FIXME
 
 // FILE_DEPENDENCIES: ../check-stderr.sh
diff --git a/test/std/input.output/iostream.objects/wide.stream.objects/wcout.sh.cpp b/test/std/input.output/iostream.objects/wide.stream.objects/wcout.sh.cpp
index 5dd8345..3d4af97 100644
--- a/test/std/input.output/iostream.objects/wide.stream.objects/wcout.sh.cpp
+++ b/test/std/input.output/iostream.objects/wide.stream.objects/wcout.sh.cpp
@@ -10,6 +10,7 @@
 
 // istream wcout;
 
+// XFAIL: libcpp-has-no-wide-characters
 // XFAIL: LIBCXX-WINDOWS-FIXME
 
 // FILE_DEPENDENCIES: ../check-stdout.sh
diff --git a/test/std/input.output/iostreams.base/ios/basic.ios.members/narrow.pass.cpp b/test/std/input.output/iostreams.base/ios/basic.ios.members/narrow.pass.cpp
index 5b0c903..fbc3ae8 100644
--- a/test/std/input.output/iostreams.base/ios/basic.ios.members/narrow.pass.cpp
+++ b/test/std/input.output/iostreams.base/ios/basic.ios.members/narrow.pass.cpp
@@ -12,6 +12,8 @@
 
 // char narrow(char_type c, char dfault) const;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <ios>
 #include <cassert>
 
diff --git a/test/std/input.output/stream.buffers/streambuf/streambuf.cons/copy.pass.cpp b/test/std/input.output/stream.buffers/streambuf/streambuf.cons/copy.pass.cpp
index 9c47c07..5806751 100644
--- a/test/std/input.output/stream.buffers/streambuf/streambuf.cons/copy.pass.cpp
+++ b/test/std/input.output/stream.buffers/streambuf/streambuf.cons/copy.pass.cpp
@@ -57,16 +57,13 @@
         test<char> t2 = t;
     }
     {
-        test<wchar_t> t;
-        test<wchar_t> t2 = t;
-    }
-    {
         char g1, g2, g3, p1, p3;
         test<char> t;
         t.setg(&g1, &g2, &g3);
         t.setp(&p1, &p3);
         test<char> t2 = t;
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         wchar_t g1, g2, g3, p1, p3;
         test<wchar_t> t;
@@ -74,15 +71,22 @@
         t.setp(&p1, &p3);
         test<wchar_t> t2 = t;
     }
+    {
+        test<wchar_t> t;
+        test<wchar_t> t2 = t;
+    }
+#endif
     std::locale::global(std::locale(LOCALE_en_US_UTF_8));
     {
         test<char> t;
         test<char> t2 = t;
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         test<wchar_t> t;
         test<wchar_t> t2 = t;
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/stream.buffers/streambuf/streambuf.cons/default.pass.cpp b/test/std/input.output/stream.buffers/streambuf/streambuf.cons/default.pass.cpp
index eaa1a9b..df9df90 100644
--- a/test/std/input.output/stream.buffers/streambuf/streambuf.cons/default.pass.cpp
+++ b/test/std/input.output/stream.buffers/streambuf/streambuf.cons/default.pass.cpp
@@ -42,19 +42,24 @@
         test<char> t;
         assert(t.getloc().name() == "C");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         test<wchar_t> t;
         assert(t.getloc().name() == "C");
     }
+#endif
+
     std::locale::global(std::locale(LOCALE_en_US_UTF_8));
     {
         test<char> t;
         assert(t.getloc().name() == LOCALE_en_US_UTF_8);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         test<wchar_t> t;
         assert(t.getloc().name() == LOCALE_en_US_UTF_8);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.assign/assign.pass.cpp b/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.assign/assign.pass.cpp
index e16094b..8a976e7 100644
--- a/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.assign/assign.pass.cpp
+++ b/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.assign/assign.pass.cpp
@@ -59,11 +59,6 @@
         t2 = t;
     }
     {
-        test<wchar_t> t;
-        test<wchar_t> t2;
-        t2 = t;
-    }
-    {
         char g1, g2, g3, p1, p3;
         test<char> t;
         t.setg(&g1, &g2, &g3);
@@ -71,6 +66,12 @@
         test<char> t2;
         t2 = t;
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    {
+        test<wchar_t> t;
+        test<wchar_t> t2;
+        t2 = t;
+    }
     {
         wchar_t g1, g2, g3, p1, p3;
         test<wchar_t> t;
@@ -79,17 +80,20 @@
         test<wchar_t> t2;
         t2 = t;
     }
+#endif
     std::locale::global(std::locale(LOCALE_en_US_UTF_8));
     {
         test<char> t;
         test<char> t2;
         t2 = t;
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         test<wchar_t> t;
         test<wchar_t> t2;
         t2 = t;
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.assign/swap.pass.cpp b/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.assign/swap.pass.cpp
index d96a60a..c575c2c 100644
--- a/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.assign/swap.pass.cpp
+++ b/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.assign/swap.pass.cpp
@@ -68,11 +68,6 @@
         t2.swap(t);
     }
     {
-        test<wchar_t> t;
-        test<wchar_t> t2;
-        t2.swap(t);
-    }
-    {
         char g1, g2, g3, p1, p3;
         test<char> t;
         t.setg(&g1, &g2, &g3);
@@ -80,6 +75,12 @@
         test<char> t2;
         t2.swap(t);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    {
+        test<wchar_t> t;
+        test<wchar_t> t2;
+        t2.swap(t);
+    }
     {
         wchar_t g1, g2, g3, p1, p3;
         test<wchar_t> t;
@@ -88,17 +89,20 @@
         test<wchar_t> t2;
         t2.swap(t);
     }
+#endif
     std::locale::global(std::locale(LOCALE_en_US_UTF_8));
     {
         test<char> t;
         test<char> t2;
         t2.swap(t);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         test<wchar_t> t;
         test<wchar_t> t2;
         t2.swap(t);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.get.area/gbump.pass.cpp b/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.get.area/gbump.pass.cpp
index 2091a9d..f02fe42 100644
--- a/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.get.area/gbump.pass.cpp
+++ b/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.get.area/gbump.pass.cpp
@@ -51,12 +51,14 @@
         t.setg(in, in+1, in+sizeof(in)/sizeof(in[0]));
         t.gbump(2);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         test<wchar_t> t;
         wchar_t in[] = L"ABCDE";
         t.setg(in, in+1, in+sizeof(in)/sizeof(in[0]));
         t.gbump(3);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.get.area/setg.pass.cpp b/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.get.area/setg.pass.cpp
index 8f01ac9..ee6dc78 100644
--- a/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.get.area/setg.pass.cpp
+++ b/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.get.area/setg.pass.cpp
@@ -42,11 +42,13 @@
         char in[] = "ABC";
         t.setg(in, in+1, in+sizeof(in)/sizeof(in[0]));
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         test<wchar_t> t;
         wchar_t in[] = L"ABC";
         t.setg(in, in+1, in+sizeof(in)/sizeof(in[0]));
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.put.area/pbump.pass.cpp b/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.put.area/pbump.pass.cpp
index 346951f..6acd179 100644
--- a/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.put.area/pbump.pass.cpp
+++ b/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.put.area/pbump.pass.cpp
@@ -52,6 +52,7 @@
         t.pbump(2);
         t.pbump(1);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         test<wchar_t> t;
         wchar_t in[] = L"ABCDE";
@@ -59,6 +60,7 @@
         t.pbump(3);
         t.pbump(1);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.put.area/setp.pass.cpp b/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.put.area/setp.pass.cpp
index 201a65d..acbc000 100644
--- a/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.put.area/setp.pass.cpp
+++ b/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.put.area/setp.pass.cpp
@@ -42,11 +42,13 @@
         char in[] = "ABC";
         t.setp(in, in+sizeof(in)/sizeof(in[0]));
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         test<wchar_t> t;
         wchar_t in[] = L"ABC";
         t.setp(in, in+sizeof(in)/sizeof(in[0]));
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/stream.buffers/streambuf/types.pass.cpp b/test/std/input.output/stream.buffers/streambuf/types.pass.cpp
index a80c23e..3dd8a3e 100644
--- a/test/std/input.output/stream.buffers/streambuf/types.pass.cpp
+++ b/test/std/input.output/stream.buffers/streambuf/types.pass.cpp
@@ -32,11 +32,13 @@
     static_assert((std::is_same<std::streambuf::pos_type, std::char_traits<char>::pos_type>::value), "");
     static_assert((std::is_same<std::streambuf::off_type, std::char_traits<char>::off_type>::value), "");
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     static_assert((std::is_same<std::wstreambuf::char_type, wchar_t>::value), "");
     static_assert((std::is_same<std::wstreambuf::traits_type, std::char_traits<wchar_t> >::value), "");
     static_assert((std::is_same<std::wstreambuf::int_type, std::char_traits<wchar_t>::int_type>::value), "");
     static_assert((std::is_same<std::wstreambuf::pos_type, std::char_traits<wchar_t>::pos_type>::value), "");
     static_assert((std::is_same<std::wstreambuf::off_type, std::char_traits<wchar_t>::off_type>::value), "");
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/string.streams/istringstream/istringstream.assign/member_swap.pass.cpp b/test/std/input.output/string.streams/istringstream/istringstream.assign/member_swap.pass.cpp
index e17bf5a..724fe8e 100644
--- a/test/std/input.output/string.streams/istringstream/istringstream.assign/member_swap.pass.cpp
+++ b/test/std/input.output/string.streams/istringstream/istringstream.assign/member_swap.pass.cpp
@@ -37,6 +37,7 @@
         ss0 >> i;
         assert(i == 321);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wistringstream ss0(L" 123 456");
         std::wistringstream ss(L" 789 321");
@@ -54,6 +55,7 @@
         ss0 >> i;
         assert(i == 321);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/string.streams/istringstream/istringstream.assign/move.pass.cpp b/test/std/input.output/string.streams/istringstream/istringstream.assign/move.pass.cpp
index 93c8313..3fc0967 100644
--- a/test/std/input.output/string.streams/istringstream/istringstream.assign/move.pass.cpp
+++ b/test/std/input.output/string.streams/istringstream/istringstream.assign/move.pass.cpp
@@ -51,6 +51,7 @@
         s1 >> s;
         assert(s == "Dddddddddddddddddd");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wistringstream ss0(L" 123 456");
         std::wistringstream ss;
@@ -82,6 +83,7 @@
         s1 >> s;
         assert(s == L"Dddddddddddddddddd");
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/input.output/string.streams/istringstream/istringstream.assign/nonmember_swap.pass.cpp b/test/std/input.output/string.streams/istringstream/istringstream.assign/nonmember_swap.pass.cpp
index d16b73f..be46bb1 100644
--- a/test/std/input.output/string.streams/istringstream/istringstream.assign/nonmember_swap.pass.cpp
+++ b/test/std/input.output/string.streams/istringstream/istringstream.assign/nonmember_swap.pass.cpp
@@ -40,6 +40,7 @@
         ss0 >> i;
         assert(i == 321);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wistringstream ss0(L" 123 456");
         std::wistringstream ss(L" 789 321");
@@ -57,6 +58,7 @@
         ss0 >> i;
         assert(i == 321);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/string.streams/istringstream/istringstream.cons/default.pass.cpp b/test/std/input.output/string.streams/istringstream/istringstream.cons/default.pass.cpp
index 22a823e..056c724 100644
--- a/test/std/input.output/string.streams/istringstream/istringstream.cons/default.pass.cpp
+++ b/test/std/input.output/string.streams/istringstream/istringstream.cons/default.pass.cpp
@@ -43,6 +43,7 @@
         assert(ss.good());
         assert(ss.str() == "");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wistringstream ss;
         assert(ss.rdbuf() != 0);
@@ -55,10 +56,13 @@
         assert(ss.good());
         assert(ss.str() == L"");
     }
+#endif
 
 #if TEST_STD_VER >= 11
     test<std::istringstream>();
+#   ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
     test<std::wistringstream>();
+#   endif
 #endif
 
     return 0;
diff --git a/test/std/input.output/string.streams/istringstream/istringstream.cons/move.pass.cpp b/test/std/input.output/string.streams/istringstream/istringstream.cons/move.pass.cpp
index 650284d..45ad2d2 100644
--- a/test/std/input.output/string.streams/istringstream/istringstream.cons/move.pass.cpp
+++ b/test/std/input.output/string.streams/istringstream/istringstream.cons/move.pass.cpp
@@ -32,6 +32,7 @@
         ss >> i;
         assert(i == 456);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wistringstream ss0(L" 123 456");
         std::wistringstream ss(std::move(ss0));
@@ -44,6 +45,7 @@
         ss >> i;
         assert(i == 456);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/string.streams/istringstream/istringstream.cons/string.pass.cpp b/test/std/input.output/string.streams/istringstream/istringstream.cons/string.pass.cpp
index a667869..9b0593f 100644
--- a/test/std/input.output/string.streams/istringstream/istringstream.cons/string.pass.cpp
+++ b/test/std/input.output/string.streams/istringstream/istringstream.cons/string.pass.cpp
@@ -43,6 +43,7 @@
         ss >> i;
         assert(i == 456);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wistringstream ss(L" 123 456");
         assert(ss.rdbuf() != 0);
@@ -65,6 +66,7 @@
         ss >> i;
         assert(i == 456);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/string.streams/istringstream/istringstream.members/str.pass.cpp b/test/std/input.output/string.streams/istringstream/istringstream.members/str.pass.cpp
index 4948f80..5ab126a 100644
--- a/test/std/input.output/string.streams/istringstream/istringstream.members/str.pass.cpp
+++ b/test/std/input.output/string.streams/istringstream/istringstream.members/str.pass.cpp
@@ -37,6 +37,7 @@
         ss >> i;
         assert(i == 789);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wistringstream ss(L" 123 456");
         assert(ss.rdbuf() != 0);
@@ -54,6 +55,7 @@
         ss >> i;
         assert(i == 789);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/string.streams/ostringstream/ostringstream.assign/member_swap.pass.cpp b/test/std/input.output/string.streams/ostringstream/ostringstream.assign/member_swap.pass.cpp
index 5991f87..33161fe 100644
--- a/test/std/input.output/string.streams/ostringstream/ostringstream.assign/member_swap.pass.cpp
+++ b/test/std/input.output/string.streams/ostringstream/ostringstream.assign/member_swap.pass.cpp
@@ -33,6 +33,7 @@
         ss0 << i << ' ' << 567;
         assert(ss0.str() == "234 567");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wostringstream ss0(L" 123 456");
         std::wostringstream ss;
@@ -46,6 +47,7 @@
         ss0 << i << ' ' << 567;
         assert(ss0.str() == L"234 567");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/string.streams/ostringstream/ostringstream.assign/move.pass.cpp b/test/std/input.output/string.streams/ostringstream/ostringstream.assign/move.pass.cpp
index 8be3a43..bd5f9cb 100644
--- a/test/std/input.output/string.streams/ostringstream/ostringstream.assign/move.pass.cpp
+++ b/test/std/input.output/string.streams/ostringstream/ostringstream.assign/move.pass.cpp
@@ -31,6 +31,7 @@
         ss << i << ' ' << 567;
         assert(ss.str() == "234 5676");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wostringstream ss0(L" 123 456");
         std::wostringstream ss;
@@ -42,6 +43,7 @@
         ss << i << ' ' << 567;
         assert(ss.str() == L"234 5676");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/string.streams/ostringstream/ostringstream.assign/nonmember_swap.pass.cpp b/test/std/input.output/string.streams/ostringstream/ostringstream.assign/nonmember_swap.pass.cpp
index f387c74..227623c 100644
--- a/test/std/input.output/string.streams/ostringstream/ostringstream.assign/nonmember_swap.pass.cpp
+++ b/test/std/input.output/string.streams/ostringstream/ostringstream.assign/nonmember_swap.pass.cpp
@@ -33,6 +33,7 @@
         ss0 << i << ' ' << 567;
         assert(ss0.str() == "234 567");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wostringstream ss0(L" 123 456");
         std::wostringstream ss;
@@ -46,6 +47,7 @@
         ss0 << i << ' ' << 567;
         assert(ss0.str() == L"234 567");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/string.streams/ostringstream/ostringstream.cons/default.pass.cpp b/test/std/input.output/string.streams/ostringstream/ostringstream.cons/default.pass.cpp
index 5ce6336..feac144 100644
--- a/test/std/input.output/string.streams/ostringstream/ostringstream.cons/default.pass.cpp
+++ b/test/std/input.output/string.streams/ostringstream/ostringstream.cons/default.pass.cpp
@@ -43,6 +43,7 @@
         assert(ss.good());
         assert(ss.str() == "");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wostringstream ss;
         assert(ss.rdbuf() != 0);
@@ -55,10 +56,13 @@
         assert(ss.good());
         assert(ss.str() == L"");
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
 #if TEST_STD_VER >= 11
     test<std::ostringstream>();
+#   ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
     test<std::wostringstream>();
+#   endif
 #endif
 
     return 0;
diff --git a/test/std/input.output/string.streams/ostringstream/ostringstream.cons/move.pass.cpp b/test/std/input.output/string.streams/ostringstream/ostringstream.cons/move.pass.cpp
index 6823bb6..6a63cd6 100644
--- a/test/std/input.output/string.streams/ostringstream/ostringstream.cons/move.pass.cpp
+++ b/test/std/input.output/string.streams/ostringstream/ostringstream.cons/move.pass.cpp
@@ -30,6 +30,7 @@
         ss << i << ' ' << 567;
         assert(ss.str() == "234 5676");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wostringstream ss0(L" 123 456");
         std::wostringstream ss(std::move(ss0));
@@ -40,6 +41,7 @@
         ss << i << ' ' << 567;
         assert(ss.str() == L"234 5676");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/string.streams/ostringstream/ostringstream.cons/string.pass.cpp b/test/std/input.output/string.streams/ostringstream/ostringstream.cons/string.pass.cpp
index 5ff91b4..af3c320 100644
--- a/test/std/input.output/string.streams/ostringstream/ostringstream.cons/string.pass.cpp
+++ b/test/std/input.output/string.streams/ostringstream/ostringstream.cons/string.pass.cpp
@@ -39,6 +39,7 @@
         ss << i << ' ' << 567;
         assert(ss.str() == "234 5676");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wostringstream ss(L" 123 456");
         assert(ss.rdbuf() != 0);
@@ -57,6 +58,7 @@
         ss << i << ' ' << 567;
         assert(ss.str() == L"234 5676");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/string.streams/ostringstream/ostringstream.members/str.pass.cpp b/test/std/input.output/string.streams/ostringstream/ostringstream.members/str.pass.cpp
index e141d4f..63f6b5e 100644
--- a/test/std/input.output/string.streams/ostringstream/ostringstream.members/str.pass.cpp
+++ b/test/std/input.output/string.streams/ostringstream/ostringstream.members/str.pass.cpp
@@ -35,6 +35,7 @@
         ss << "abc";
         assert(ss.str() == "abc9");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wostringstream ss(L" 123 456");
         assert(ss.rdbuf() != 0);
@@ -50,6 +51,7 @@
         ss << L"abc";
         assert(ss.str() == L"abc9");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/string.streams/stringbuf/stringbuf.assign/member_swap.pass.cpp b/test/std/input.output/string.streams/stringbuf/stringbuf.assign/member_swap.pass.cpp
index d63f077..edb977a 100644
--- a/test/std/input.output/string.streams/stringbuf/stringbuf.assign/member_swap.pass.cpp
+++ b/test/std/input.output/string.streams/stringbuf/stringbuf.assign/member_swap.pass.cpp
@@ -41,6 +41,7 @@
         assert(buf.str() == "testing");
         assert(buf1.str() == "");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wstringbuf buf1(L"testing");
         std::wstringbuf buf;
@@ -62,6 +63,7 @@
         assert(buf.str() == L"testing");
         assert(buf1.str() == L"");
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/input.output/string.streams/stringbuf/stringbuf.assign/move.pass.cpp b/test/std/input.output/string.streams/stringbuf/stringbuf.assign/move.pass.cpp
index bdb3bca..27b9579 100644
--- a/test/std/input.output/string.streams/stringbuf/stringbuf.assign/move.pass.cpp
+++ b/test/std/input.output/string.streams/stringbuf/stringbuf.assign/move.pass.cpp
@@ -38,6 +38,7 @@
         buf = move(buf1);
         assert(buf.str() == "testing");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wstringbuf buf1(L"testing");
         std::wstringbuf buf;
@@ -56,6 +57,7 @@
         buf = move(buf1);
         assert(buf.str() == L"testing");
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/input.output/string.streams/stringbuf/stringbuf.assign/nonmember_swap.pass.cpp b/test/std/input.output/string.streams/stringbuf/stringbuf.assign/nonmember_swap.pass.cpp
index 70324da..6ac1381 100644
--- a/test/std/input.output/string.streams/stringbuf/stringbuf.assign/nonmember_swap.pass.cpp
+++ b/test/std/input.output/string.streams/stringbuf/stringbuf.assign/nonmember_swap.pass.cpp
@@ -43,6 +43,7 @@
         assert(buf.str() == "testing");
         assert(buf1.str() == "");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wstringbuf buf1(L"testing");
         std::wstringbuf buf;
@@ -64,6 +65,7 @@
         assert(buf.str() == L"testing");
         assert(buf1.str() == L"");
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/input.output/string.streams/stringbuf/stringbuf.cons/default.pass.cpp b/test/std/input.output/string.streams/stringbuf/stringbuf.cons/default.pass.cpp
index 8e87a88..6451d44 100644
--- a/test/std/input.output/string.streams/stringbuf/stringbuf.cons/default.pass.cpp
+++ b/test/std/input.output/string.streams/stringbuf/stringbuf.cons/default.pass.cpp
@@ -45,17 +45,19 @@
         assert(buf.str() == "");
     }
     {
-        std::wstringbuf buf;
-        assert(buf.str() == L"");
-    }
-    {
         testbuf<char> buf;
         buf.check();
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    {
+        std::wstringbuf buf;
+        assert(buf.str() == L"");
+    }
     {
         testbuf<wchar_t> buf;
         buf.check();
     }
+#endif
 
 #if TEST_STD_VER >= 11
     {
diff --git a/test/std/input.output/string.streams/stringbuf/stringbuf.cons/move.pass.cpp b/test/std/input.output/string.streams/stringbuf/stringbuf.cons/move.pass.cpp
index af1eb38..c4846c0 100644
--- a/test/std/input.output/string.streams/stringbuf/stringbuf.cons/move.pass.cpp
+++ b/test/std/input.output/string.streams/stringbuf/stringbuf.cons/move.pass.cpp
@@ -35,6 +35,7 @@
         std::stringbuf buf(std::move(buf1));
         assert(buf.str() == "testing");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wstringbuf buf1(L"testing");
         std::wstringbuf buf(std::move(buf1));
@@ -50,6 +51,7 @@
         std::wstringbuf buf(std::move(buf1));
         assert(buf.str() == L"testing");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/string.streams/stringbuf/stringbuf.cons/string.pass.cpp b/test/std/input.output/string.streams/stringbuf/stringbuf.cons/string.pass.cpp
index 409d293..92e02a5 100644
--- a/test/std/input.output/string.streams/stringbuf/stringbuf.cons/string.pass.cpp
+++ b/test/std/input.output/string.streams/stringbuf/stringbuf.cons/string.pass.cpp
@@ -33,6 +33,7 @@
         std::stringbuf buf("testing", std::ios_base::out);
         assert(buf.str() == "testing");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wstringbuf buf(L"testing");
         assert(buf.str() == L"testing");
@@ -45,6 +46,7 @@
         std::wstringbuf buf(L"testing", std::ios_base::out);
         assert(buf.str() == L"testing");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/string.streams/stringbuf/stringbuf.members/str.pass.cpp b/test/std/input.output/string.streams/stringbuf/stringbuf.members/str.pass.cpp
index f536ba2..18a2337 100644
--- a/test/std/input.output/string.streams/stringbuf/stringbuf.members/str.pass.cpp
+++ b/test/std/input.output/string.streams/stringbuf/stringbuf.members/str.pass.cpp
@@ -26,12 +26,14 @@
         buf.str("another test");
         assert(buf.str() == "another test");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wstringbuf buf(L"testing");
         assert(buf.str() == L"testing");
         buf.str(L"another test");
         assert(buf.str() == L"another test");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/overflow.pass.cpp b/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/overflow.pass.cpp
index 84110d3..990f918 100644
--- a/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/overflow.pass.cpp
+++ b/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/overflow.pass.cpp
@@ -68,6 +68,7 @@
         assert(sb.sputc('1') == '1');
         assert(sb.str() == "12345678901");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L"abc");
         assert(sb.sputc(L'1') == L'1');
@@ -93,6 +94,7 @@
         assert(sb.sputc(L'1') == L'1');
         assert(sb.str() == L"12345678901");
     }
+#endif
     {
         testbuf<char> sb("abc", std::ios_base::app | std::ios_base::out);
         assert(sb.sputc('1') == '1');
diff --git a/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/pbackfail.pass.cpp b/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/pbackfail.pass.cpp
index 4429329..9a7d30e 100644
--- a/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/pbackfail.pass.cpp
+++ b/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/pbackfail.pass.cpp
@@ -68,6 +68,7 @@
         assert(sb.pbackfail(std::char_traits<char>::eof()) == std::char_traits<char>::eof());
         assert(sb.str() == "133");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L"123", std::ios_base::in);
         assert(sb.sgetc() == L'1');
@@ -95,6 +96,7 @@
         assert(sb.pbackfail(std::char_traits<wchar_t>::eof()) == std::char_traits<wchar_t>::eof());
         assert(sb.str() == L"133");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/seekoff.pass.cpp b/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/seekoff.pass.cpp
index a778d03..2bd5585 100644
--- a/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/seekoff.pass.cpp
+++ b/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/seekoff.pass.cpp
@@ -105,6 +105,7 @@
         assert(sb.sputc('c') == 'c');
         assert(sb.str() == "0123456c89");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wstringbuf sb(L"0123456789", std::ios_base::in);
         assert(sb.pubseekoff(3, std::ios_base::beg, std::ios_base::out) == -1);
@@ -165,6 +166,7 @@
         assert(sb.sputc(L'c') == L'c');
         assert(sb.str() == L"0123456c89");
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/seekpos.pass.cpp b/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/seekpos.pass.cpp
index 1980292..68bebf5 100644
--- a/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/seekpos.pass.cpp
+++ b/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/seekpos.pass.cpp
@@ -48,6 +48,7 @@
         assert(sb.sputc('3') == '3');
         assert(sb.str() == "0123456789");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wstringbuf sb(L"0123456789", std::ios_base::in);
         assert(sb.pubseekpos(3, std::ios_base::out) == -1);
@@ -75,6 +76,7 @@
         assert(sb.sputc(L'3') == L'3');
         assert(sb.str() == L"0123456789");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/setbuf.pass.cpp b/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/setbuf.pass.cpp
index 0347ef3..2937cdf 100644
--- a/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/setbuf.pass.cpp
+++ b/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/setbuf.pass.cpp
@@ -25,11 +25,13 @@
         assert(sb.pubsetbuf(0, 0) == &sb);
         assert(sb.str() == "0123456789");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wstringbuf sb(L"0123456789");
         assert(sb.pubsetbuf(0, 0) == &sb);
         assert(sb.str() == L"0123456789");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/underflow.pass.cpp b/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/underflow.pass.cpp
index a3490e2..c743609 100644
--- a/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/underflow.pass.cpp
+++ b/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/underflow.pass.cpp
@@ -50,6 +50,7 @@
         assert(sb.underflow() == '4');
         assert(sb.underflow() == '4');
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         testbuf<wchar_t> sb(L"123");
         sb.pbump(3);
@@ -68,6 +69,7 @@
         assert(sb.underflow() == L'4');
         assert(sb.underflow() == L'4');
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/input.output/string.streams/stringstream.cons/default.pass.cpp b/test/std/input.output/string.streams/stringstream.cons/default.pass.cpp
index f0c8750..095dbf9 100644
--- a/test/std/input.output/string.streams/stringstream.cons/default.pass.cpp
+++ b/test/std/input.output/string.streams/stringstream.cons/default.pass.cpp
@@ -43,6 +43,7 @@
         assert(ss.good());
         assert(ss.str() == "");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wstringstream ss;
         assert(ss.rdbuf() != 0);
@@ -55,10 +56,13 @@
         assert(ss.good());
         assert(ss.str() == L"");
     }
+#endif
 
 #if TEST_STD_VER >= 11
     test<std::stringstream>();
+#   ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
     test<std::wstringstream>();
+#   endif
 #endif
 
     return 0;
diff --git a/test/std/input.output/string.streams/stringstream.cons/move.pass.cpp b/test/std/input.output/string.streams/stringstream.cons/move.pass.cpp
index 642fd75..ec19c67 100644
--- a/test/std/input.output/string.streams/stringstream.cons/move.pass.cpp
+++ b/test/std/input.output/string.streams/stringstream.cons/move.pass.cpp
@@ -34,6 +34,7 @@
         ss << i << ' ' << 123;
         assert(ss.str() == "456 1236 ");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wstringstream ss0(L" 123 456 ");
         std::wstringstream ss(std::move(ss0));
@@ -48,6 +49,7 @@
         ss << i << ' ' << 123;
         assert(ss.str() == L"456 1236 ");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/string.streams/stringstream.cons/string.pass.cpp b/test/std/input.output/string.streams/stringstream.cons/string.pass.cpp
index 55d95df..0fb8a02 100644
--- a/test/std/input.output/string.streams/stringstream.cons/string.pass.cpp
+++ b/test/std/input.output/string.streams/stringstream.cons/string.pass.cpp
@@ -44,6 +44,7 @@
         ss << i << ' ' << 123;
         assert(ss.str() == "456 1236 ");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wstringstream ss(L" 123 456 ");
         assert(ss.rdbuf() != 0);
@@ -57,13 +58,14 @@
         ss << i << ' ' << 123;
         assert(ss.str() == L"456 1236 ");
     }
+#endif
     { // This is https://llvm.org/PR33727
         typedef std::basic_string   <char, std::char_traits<char>, NoDefaultAllocator<char> > S;
         typedef std::basic_stringbuf<char, std::char_traits<char>, NoDefaultAllocator<char> > SB;
 
         S s(NoDefaultAllocator<char>(1));
         SB sb(s);
-    //  This test is not required by the standard, but *where else* could it get the allocator?
+        // This test is not required by the standard, but *where else* could it get the allocator?
         assert(sb.str().get_allocator() == s.get_allocator());
     }
 
diff --git a/test/std/input.output/string.streams/stringstream.cons/stringstream.assign/member_swap.pass.cpp b/test/std/input.output/string.streams/stringstream.cons/stringstream.assign/member_swap.pass.cpp
index ddd117e..1d5ff8b 100644
--- a/test/std/input.output/string.streams/stringstream.cons/stringstream.assign/member_swap.pass.cpp
+++ b/test/std/input.output/string.streams/stringstream.cons/stringstream.assign/member_swap.pass.cpp
@@ -37,6 +37,7 @@
         ss0 << i << ' ' << 123;
         assert(ss0.str() == "456 123");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wstringstream ss0(L" 123 456 ");
         std::wstringstream ss;
@@ -54,6 +55,7 @@
         ss0 << i << ' ' << 123;
         assert(ss0.str() == L"456 123");
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/input.output/string.streams/stringstream.cons/stringstream.assign/move.pass.cpp b/test/std/input.output/string.streams/stringstream.cons/stringstream.assign/move.pass.cpp
index 91a685d..35c2197 100644
--- a/test/std/input.output/string.streams/stringstream.cons/stringstream.assign/move.pass.cpp
+++ b/test/std/input.output/string.streams/stringstream.cons/stringstream.assign/move.pass.cpp
@@ -35,6 +35,7 @@
         ss << i << ' ' << 123;
         assert(ss.str() == "456 1236 ");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wstringstream ss0(L" 123 456 ");
         std::wstringstream ss;
@@ -50,6 +51,7 @@
         ss << i << ' ' << 123;
         assert(ss.str() == L"456 1236 ");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/string.streams/stringstream.cons/stringstream.assign/nonmember_swap.pass.cpp b/test/std/input.output/string.streams/stringstream.cons/stringstream.assign/nonmember_swap.pass.cpp
index 6304071..a882bec 100644
--- a/test/std/input.output/string.streams/stringstream.cons/stringstream.assign/nonmember_swap.pass.cpp
+++ b/test/std/input.output/string.streams/stringstream.cons/stringstream.assign/nonmember_swap.pass.cpp
@@ -40,6 +40,7 @@
         ss0 << i << ' ' << 123;
         assert(ss0.str() == "456 123");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wstringstream ss0(L" 123 456 ");
         std::wstringstream ss;
@@ -57,6 +58,7 @@
         ss0 << i << ' ' << 123;
         assert(ss0.str() == L"456 123");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/input.output/string.streams/stringstream.members/str.pass.cpp b/test/std/input.output/string.streams/stringstream.members/str.pass.cpp
index 8645e57..05b233e 100644
--- a/test/std/input.output/string.streams/stringstream.members/str.pass.cpp
+++ b/test/std/input.output/string.streams/stringstream.members/str.pass.cpp
@@ -40,6 +40,7 @@
         ss << i << ' ' << 321;
         assert(ss.str() == "89 3219 ");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wstringstream ss(L" 123 456 ");
         assert(ss.rdbuf() != 0);
@@ -60,6 +61,7 @@
         ss << i << ' ' << 321;
         assert(ss.str() == L"89 3219 ");
     }
+#endif
     {
         std::stringstream ss;
         ss.write("\xd1", 1);
diff --git a/test/std/iterators/stream.iterators/istream.iterator/types.pass.cpp b/test/std/iterators/stream.iterators/istream.iterator/types.pass.cpp
index 6b7b1f9..33b16c1 100644
--- a/test/std/iterators/stream.iterators/istream.iterator/types.pass.cpp
+++ b/test/std/iterators/stream.iterators/istream.iterator/types.pass.cpp
@@ -65,6 +65,7 @@
     static_assert( std::is_trivially_destructible<I1>::value, "");
     }
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
     typedef std::istream_iterator<unsigned, wchar_t> I2; // unsigned is trivially destructible
 #if TEST_STD_VER <= 14
@@ -82,6 +83,7 @@
     static_assert( std::is_trivially_copy_constructible<I2>::value, "");
     static_assert( std::is_trivially_destructible<I2>::value, "");
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
     typedef std::istream_iterator<std::string> I3; // string is NOT trivially destructible
     static_assert(!std::is_trivially_copy_constructible<I3>::value, "");
diff --git a/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator.cons/default.pass.cpp b/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator.cons/default.pass.cpp
index 9502e0d..ccda358 100644
--- a/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator.cons/default.pass.cpp
+++ b/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator.cons/default.pass.cpp
@@ -32,6 +32,8 @@
         (void)it2;
 #endif
     }
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef std::istreambuf_iterator<wchar_t> T;
         T it;
@@ -41,6 +43,7 @@
         (void)it2;
 #endif
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator.cons/istream.pass.cpp b/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator.cons/istream.pass.cpp
index 6b52cf5..db99f46 100644
--- a/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator.cons/istream.pass.cpp
+++ b/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator.cons/istream.pass.cpp
@@ -30,6 +30,7 @@
         std::istreambuf_iterator<char> i(inf);
         assert(i != std::istreambuf_iterator<char>());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wistringstream inf;
         std::istreambuf_iterator<wchar_t> i(inf);
@@ -40,6 +41,7 @@
         std::istreambuf_iterator<wchar_t> i(inf);
         assert(i != std::istreambuf_iterator<wchar_t>());
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator.cons/proxy.pass.cpp b/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator.cons/proxy.pass.cpp
index 4fd6506..4ad6c38 100644
--- a/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator.cons/proxy.pass.cpp
+++ b/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator.cons/proxy.pass.cpp
@@ -27,6 +27,7 @@
         assert(i != std::istreambuf_iterator<char>());
         assert(*i == 'b');
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wistringstream inf(L"abc");
         std::istreambuf_iterator<wchar_t> j(inf);
@@ -34,6 +35,7 @@
         assert(i != std::istreambuf_iterator<wchar_t>());
         assert(*i == L'b');
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator.cons/streambuf.pass.cpp b/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator.cons/streambuf.pass.cpp
index e851379..bb83a55 100644
--- a/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator.cons/streambuf.pass.cpp
+++ b/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator.cons/streambuf.pass.cpp
@@ -34,6 +34,7 @@
         std::istreambuf_iterator<char> i(inf.rdbuf());
         assert(i != std::istreambuf_iterator<char>());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::istreambuf_iterator<wchar_t> i(nullptr);
         assert(i == std::istreambuf_iterator<wchar_t>());
@@ -48,6 +49,7 @@
         std::istreambuf_iterator<wchar_t> i(inf.rdbuf());
         assert(i != std::istreambuf_iterator<wchar_t>());
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_equal/equal.pass.cpp b/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_equal/equal.pass.cpp
index 95db77e..ba6e2b4 100644
--- a/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_equal/equal.pass.cpp
+++ b/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_equal/equal.pass.cpp
@@ -59,6 +59,7 @@
         assert( i5.equal(i4));
         assert( i5.equal(i5));
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wistringstream inf1(L"abc");
         std::wistringstream inf2(L"def");
@@ -98,6 +99,7 @@
         assert( i5.equal(i4));
         assert( i5.equal(i5));
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git "a/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_op\041=/not_equal.pass.cpp" "b/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_op\041=/not_equal.pass.cpp"
index daf325c..2771911 100644
--- "a/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_op\041=/not_equal.pass.cpp"
+++ "b/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_op\041=/not_equal.pass.cpp"
@@ -61,6 +61,7 @@
         assert(!(i5 != i4));
         assert(!(i5 != i5));
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wistringstream inf1(L"abc");
         std::wistringstream inf2(L"def");
@@ -100,6 +101,7 @@
         assert(!(i5 != i4));
         assert(!(i5 != i5));
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_op++/dereference.pass.cpp b/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_op++/dereference.pass.cpp
index 1309c69..431e8d8 100644
--- a/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_op++/dereference.pass.cpp
+++ b/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_op++/dereference.pass.cpp
@@ -29,6 +29,7 @@
         ++i;
         assert(*i == 'c');
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wistringstream inf(L"abc");
         std::istreambuf_iterator<wchar_t> i(inf);
@@ -38,6 +39,7 @@
         ++i;
         assert(*i == L'c');
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_op==/equal.pass.cpp b/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_op==/equal.pass.cpp
index 1c0c88f..c0fbf68 100644
--- a/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_op==/equal.pass.cpp
+++ b/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_op==/equal.pass.cpp
@@ -61,6 +61,7 @@
         assert( (i5 == i4));
         assert( (i5 == i5));
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wistringstream inf1(L"abc");
         std::wistringstream inf2(L"def");
@@ -100,6 +101,7 @@
         assert( (i5 == i4));
         assert( (i5 == i5));
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_op_astrk/post_increment.pass.cpp b/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_op_astrk/post_increment.pass.cpp
index 7c52e1b..c325e45 100644
--- a/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_op_astrk/post_increment.pass.cpp
+++ b/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_op_astrk/post_increment.pass.cpp
@@ -28,6 +28,7 @@
         assert(*i++ == 'c');
         assert(i == std::istreambuf_iterator<char>());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wistringstream inf(L"abc");
         std::istreambuf_iterator<wchar_t> i(inf);
@@ -36,6 +37,7 @@
         assert(*i++ == L'c');
         assert(i == std::istreambuf_iterator<wchar_t>());
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_op_astrk/pre_increment.pass.cpp b/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_op_astrk/pre_increment.pass.cpp
index da11ca0..c2e28ed 100644
--- a/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_op_astrk/pre_increment.pass.cpp
+++ b/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_op_astrk/pre_increment.pass.cpp
@@ -29,6 +29,7 @@
         assert(*++i == 'c');
         assert(++i == std::istreambuf_iterator<char>());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wistringstream inf(L"abc");
         std::istreambuf_iterator<wchar_t> i(inf);
@@ -37,6 +38,7 @@
         assert(*++i == L'c');
         assert(++i == std::istreambuf_iterator<wchar_t>());
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_proxy/proxy.pass.cpp b/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_proxy/proxy.pass.cpp
index f385a40..b70dab2 100644
--- a/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_proxy/proxy.pass.cpp
+++ b/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_proxy/proxy.pass.cpp
@@ -33,11 +33,13 @@
         std::istreambuf_iterator<char> i(inf);
         assert(*i++ == 'a');
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wistringstream inf(L"abc");
         std::istreambuf_iterator<wchar_t> i(inf);
         assert(*i++ == L'a');
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/iterators/stream.iterators/istreambuf.iterator/types.pass.cpp b/test/std/iterators/stream.iterators/istreambuf.iterator/types.pass.cpp
index 257a266..278470e 100644
--- a/test/std/iterators/stream.iterators/istreambuf.iterator/types.pass.cpp
+++ b/test/std/iterators/stream.iterators/istreambuf.iterator/types.pass.cpp
@@ -58,6 +58,7 @@
     static_assert((std::is_trivially_destructible<I1>::value), "" );
     }
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
     typedef std::istreambuf_iterator<wchar_t> I2;
 #if TEST_STD_VER <= 14
@@ -78,6 +79,7 @@
     static_assert((std::is_trivially_copy_constructible<I2>::value), "" );
     static_assert((std::is_trivially_destructible<I2>::value), "" );
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/iterators/stream.iterators/ostream.iterator/ostream.iterator.cons.des/ostream_delim.pass.cpp b/test/std/iterators/stream.iterators/ostream.iterator/ostream.iterator.cons.des/ostream_delim.pass.cpp
index 766e989..f63aa88 100644
--- a/test/std/iterators/stream.iterators/ostream.iterator/ostream.iterator.cons.des/ostream_delim.pass.cpp
+++ b/test/std/iterators/stream.iterators/ostream.iterator/ostream.iterator.cons.des/ostream_delim.pass.cpp
@@ -33,11 +33,13 @@
         std::ostream_iterator<int> i(outf, ", ");
         assert(outf.good());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wostringstream outf;
         std::ostream_iterator<double, wchar_t> i(outf, L", ");
         assert(outf.good());
     }
+#endif
     {
         StringStream outf;
         std::ostream_iterator<int, char, MyTraits> i(outf, ", ");
diff --git a/test/std/iterators/stream.iterators/ostream.iterator/ostream.iterator.ops/assign_t.pass.cpp b/test/std/iterators/stream.iterators/ostream.iterator/ostream.iterator.ops/assign_t.pass.cpp
index 5a2f2cc..fe140c3 100644
--- a/test/std/iterators/stream.iterators/ostream.iterator/ostream.iterator.ops/assign_t.pass.cpp
+++ b/test/std/iterators/stream.iterators/ostream.iterator/ostream.iterator.ops/assign_t.pass.cpp
@@ -40,6 +40,7 @@
         i = 2.4;
         assert(outf.str() == "2, ");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wostringstream outf;
         std::ostream_iterator<int, wchar_t> i(outf);
@@ -52,6 +53,7 @@
         i = 2.4;
         assert(outf.str() == L"2, ");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/iterators/stream.iterators/ostream.iterator/types.pass.cpp b/test/std/iterators/stream.iterators/ostream.iterator/types.pass.cpp
index 042feeb..b2f5b8c 100644
--- a/test/std/iterators/stream.iterators/ostream.iterator/types.pass.cpp
+++ b/test/std/iterators/stream.iterators/ostream.iterator/types.pass.cpp
@@ -54,6 +54,7 @@
     static_assert((std::is_same<I1::ostream_type, std::ostream>::value), "");
     }
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
     typedef std::ostream_iterator<unsigned, wchar_t> I2;
 #if TEST_STD_VER <= 14
@@ -73,6 +74,7 @@
     static_assert((std::is_same<I2::traits_type, std::char_traits<wchar_t> >::value), "");
     static_assert((std::is_same<I2::ostream_type, std::wostream>::value), "");
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.cons/ostream.pass.cpp b/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.cons/ostream.pass.cpp
index 7be77cb..12d1756 100644
--- a/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.cons/ostream.pass.cpp
+++ b/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.cons/ostream.pass.cpp
@@ -25,11 +25,13 @@
         std::ostreambuf_iterator<char> i(outf);
         assert(!i.failed());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wostringstream outf;
         std::ostreambuf_iterator<wchar_t> i(outf);
         assert(!i.failed());
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.cons/streambuf.pass.cpp b/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.cons/streambuf.pass.cpp
index 0fda71b..9d534e3 100644
--- a/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.cons/streambuf.pass.cpp
+++ b/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.cons/streambuf.pass.cpp
@@ -25,11 +25,13 @@
         std::ostreambuf_iterator<char> i(outf.rdbuf());
         assert(!i.failed());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wostringstream outf;
         std::ostreambuf_iterator<wchar_t> i(outf.rdbuf());
         assert(!i.failed());
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.ops/assign_c.pass.cpp b/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.ops/assign_c.pass.cpp
index b33eb5b..401d9cb 100644
--- a/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.ops/assign_c.pass.cpp
+++ b/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.ops/assign_c.pass.cpp
@@ -29,6 +29,7 @@
         i = 'b';
         assert(outf.str() == "ab");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wostringstream outf;
         std::ostreambuf_iterator<wchar_t> i(outf);
@@ -37,6 +38,7 @@
         i = L'b';
         assert(outf.str() == L"ab");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.ops/deref.pass.cpp b/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.ops/deref.pass.cpp
index fcd88b9..671d452 100644
--- a/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.ops/deref.pass.cpp
+++ b/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.ops/deref.pass.cpp
@@ -26,12 +26,14 @@
         std::ostreambuf_iterator<char>& iref = *i;
         assert(&iref == &i);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wostringstream outf;
         std::ostreambuf_iterator<wchar_t> i(outf);
         std::ostreambuf_iterator<wchar_t>& iref = *i;
         assert(&iref == &i);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.ops/failed.pass.cpp b/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.ops/failed.pass.cpp
index d2714d1..54b6e4b 100644
--- a/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.ops/failed.pass.cpp
+++ b/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.ops/failed.pass.cpp
@@ -35,12 +35,14 @@
         i = 'a';
         assert(i.failed());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         my_streambuf<wchar_t> buf;
         std::ostreambuf_iterator<wchar_t> i(&buf);
         i = L'a';
         assert(i.failed());
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.ops/increment.pass.cpp b/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.ops/increment.pass.cpp
index 49f9458..88d4e27 100644
--- a/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.ops/increment.pass.cpp
+++ b/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.ops/increment.pass.cpp
@@ -29,6 +29,7 @@
         std::ostreambuf_iterator<char>& iref2 = i++;
         assert(&iref2 == &i);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wostringstream outf;
         std::ostreambuf_iterator<wchar_t> i(outf);
@@ -37,6 +38,7 @@
         std::ostreambuf_iterator<wchar_t>& iref2 = i++;
         assert(&iref2 == &i);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/iterators/stream.iterators/ostreambuf.iterator/types.pass.cpp b/test/std/iterators/stream.iterators/ostreambuf.iterator/types.pass.cpp
index b1260aa..9562297 100644
--- a/test/std/iterators/stream.iterators/ostreambuf.iterator/types.pass.cpp
+++ b/test/std/iterators/stream.iterators/ostreambuf.iterator/types.pass.cpp
@@ -56,6 +56,7 @@
     static_assert((std::is_same<I1::ostream_type, std::ostream>::value), "");
     }
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
     typedef std::ostreambuf_iterator<wchar_t> I2;
 #if TEST_STD_VER <= 14
@@ -76,6 +77,7 @@
     static_assert((std::is_same<I2::streambuf_type, std::wstreambuf>::value), "");
     static_assert((std::is_same<I2::ostream_type, std::wostream>::value), "");
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/language.support/cstdint/cstdint.syn/cstdint.pass.cpp b/test/std/language.support/cstdint/cstdint.syn/cstdint.pass.cpp
index 00c09b7..682c382 100644
--- a/test/std/language.support/cstdint/cstdint.syn/cstdint.pass.cpp
+++ b/test/std/language.support/cstdint/cstdint.syn/cstdint.pass.cpp
@@ -10,9 +10,7 @@
 
 #include <cstdint>
 #include <cstddef>
-#include <cwchar>
 #include <csignal>
-#include <cwctype>
 #include <climits>
 #include <type_traits>
 #include <limits>
@@ -20,6 +18,11 @@
 
 #include "test_macros.h"
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+#   include <cwchar>
+#   include <cwctype>
+#endif
+
 int main(int, char**)
 {
     // typedef std::int8_t
@@ -239,6 +242,7 @@
     // SIZE_MAX
     assert(SIZE_MAX == std::numeric_limits<std::size_t>::max());
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     // WCHAR_MIN
     assert(WCHAR_MIN == std::numeric_limits<wchar_t>::min());
 
@@ -250,6 +254,7 @@
 
     // WINT_MAX
     assert(WINT_MAX == std::numeric_limits<std::wint_t>::max());
+#endif
 
 #ifndef INT8_C
 #error INT8_C not defined
diff --git a/test/std/language.support/support.limits/limits/numeric.limits.members/lowest.pass.cpp b/test/std/language.support/support.limits/limits/numeric.limits.members/lowest.pass.cpp
index bc4f7a4..0169f2e 100644
--- a/test/std/language.support/support.limits/limits/numeric.limits.members/lowest.pass.cpp
+++ b/test/std/language.support/support.limits/limits/numeric.limits.members/lowest.pass.cpp
@@ -12,12 +12,15 @@
 
 #include <limits>
 #include <climits>
-#include <cwchar>
 #include <cfloat>
 #include <cassert>
 
 #include "test_macros.h"
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+#   include <cwchar>
+#endif
+
 template <class T>
 void
 test(T expected)
@@ -38,7 +41,9 @@
     test<char>(CHAR_MIN);
     test<signed char>(SCHAR_MIN);
     test<unsigned char>(0);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<wchar_t>(WCHAR_MIN);
+#endif
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t>(0);
 #endif
diff --git a/test/std/language.support/support.limits/limits/numeric.limits.members/max.pass.cpp b/test/std/language.support/support.limits/limits/numeric.limits.members/max.pass.cpp
index d40ac23..dd68996 100644
--- a/test/std/language.support/support.limits/limits/numeric.limits.members/max.pass.cpp
+++ b/test/std/language.support/support.limits/limits/numeric.limits.members/max.pass.cpp
@@ -12,12 +12,15 @@
 
 #include <limits>
 #include <climits>
-#include <cwchar>
 #include <cfloat>
 #include <cassert>
 
 #include "test_macros.h"
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+#   include <cwchar>
+#endif
+
 template <class T>
 void
 test(T expected)
@@ -38,7 +41,9 @@
     test<char>(CHAR_MAX);
     test<signed char>(SCHAR_MAX);
     test<unsigned char>(UCHAR_MAX);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<wchar_t>(WCHAR_MAX);
+#endif
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t>(UCHAR_MAX); // ??
 #endif
diff --git a/test/std/language.support/support.limits/limits/numeric.limits.members/min.pass.cpp b/test/std/language.support/support.limits/limits/numeric.limits.members/min.pass.cpp
index 25a59f3..525d7db 100644
--- a/test/std/language.support/support.limits/limits/numeric.limits.members/min.pass.cpp
+++ b/test/std/language.support/support.limits/limits/numeric.limits.members/min.pass.cpp
@@ -12,12 +12,15 @@
 
 #include <limits>
 #include <climits>
-#include <cwchar>
 #include <cfloat>
 #include <cassert>
 
 #include "test_macros.h"
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+#   include <cwchar>
+#endif
+
 template <class T>
 void
 test(T expected)
@@ -38,7 +41,9 @@
     test<char>(CHAR_MIN);
     test<signed char>(SCHAR_MIN);
     test<unsigned char>(0);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<wchar_t>(WCHAR_MIN);
+#endif
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t>(0);
 #endif
diff --git a/test/std/localization/locale.categories/category.collate/locale.collate.byname/compare.pass.cpp b/test/std/localization/locale.categories/category.collate/locale.collate.byname/compare.pass.cpp
index 8d759ac..65baa2a 100644
--- a/test/std/localization/locale.categories/category.collate/locale.collate.byname/compare.pass.cpp
+++ b/test/std/localization/locale.categories/category.collate/locale.collate.byname/compare.pass.cpp
@@ -45,6 +45,7 @@
             assert(f.compare(s2.data(), s2.data() + s2.size(),
                              s3.data(), s3.data() + s3.size()) == 1);
         }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         {
             const std::collate<wchar_t>& f = std::use_facet<std::collate<wchar_t> >(l);
             std::wstring s2(L"aaaaaaA");
@@ -52,6 +53,7 @@
             assert(f.compare(s2.data(), s2.data() + s2.size(),
                              s3.data(), s3.data() + s3.size()) == 1);
         }
+#endif
     }
     {
         std::locale l("C");
@@ -62,6 +64,7 @@
             assert(f.compare(s2.data(), s2.data() + s2.size(),
                              s3.data(), s3.data() + s3.size()) == 1);
         }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         {
             const std::collate<wchar_t>& f = std::use_facet<std::collate<wchar_t> >(l);
             std::wstring s2(L"aaaaaaA");
@@ -69,6 +72,7 @@
             assert(f.compare(s2.data(), s2.data() + s2.size(),
                              s3.data(), s3.data() + s3.size()) == 1);
         }
+#endif
     }
 
   return 0;
diff --git a/test/std/localization/locale.categories/category.collate/locale.collate.byname/hash.pass.cpp b/test/std/localization/locale.categories/category.collate/locale.collate.byname/hash.pass.cpp
index 8be36e3..8375763 100644
--- a/test/std/localization/locale.categories/category.collate/locale.collate.byname/hash.pass.cpp
+++ b/test/std/localization/locale.categories/category.collate/locale.collate.byname/hash.pass.cpp
@@ -36,6 +36,7 @@
         assert(f.hash(x1.data(), x1.data() + x1.size())
             != f.hash(x2.data(), x2.data() + x2.size()));
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wstring x1(L"1234");
         std::wstring x2(L"12345");
@@ -43,6 +44,7 @@
         assert(f.hash(x1.data(), x1.data() + x1.size())
             != f.hash(x2.data(), x2.data() + x2.size()));
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.collate/locale.collate.byname/transform.pass.cpp b/test/std/localization/locale.categories/category.collate/locale.collate.byname/transform.pass.cpp
index cab2f01..8d076fd 100644
--- a/test/std/localization/locale.categories/category.collate/locale.collate.byname/transform.pass.cpp
+++ b/test/std/localization/locale.categories/category.collate/locale.collate.byname/transform.pass.cpp
@@ -35,11 +35,13 @@
             const std::collate<char>& f = std::use_facet<std::collate<char> >(l);
             assert(f.transform(x.data(), x.data() + x.size()) != x);
         }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         {
             std::wstring x(L"1234");
             const std::collate<wchar_t>& f = std::use_facet<std::collate<wchar_t> >(l);
             assert(f.transform(x.data(), x.data() + x.size()) != x);
         }
+#endif
     }
     {
         std::locale l("C");
@@ -48,11 +50,13 @@
             const std::collate<char>& f = std::use_facet<std::collate<char> >(l);
             assert(f.transform(x.data(), x.data() + x.size()) == x);
         }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         {
             std::wstring x(L"1234");
             const std::collate<wchar_t>& f = std::use_facet<std::collate<wchar_t> >(l);
             assert(f.transform(x.data(), x.data() + x.size()) == x);
         }
+#endif
     }
 
   return 0;
diff --git a/test/std/localization/locale.categories/category.collate/locale.collate.byname/types.pass.cpp b/test/std/localization/locale.categories/category.collate/locale.collate.byname/types.pass.cpp
index 364783e..ba70804 100644
--- a/test/std/localization/locale.categories/category.collate/locale.collate.byname/types.pass.cpp
+++ b/test/std/localization/locale.categories/category.collate/locale.collate.byname/types.pass.cpp
@@ -39,11 +39,13 @@
         assert(&std::use_facet<std::collate<char> >(l)
             == &std::use_facet<std::collate_byname<char> >(l));
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         assert(std::has_facet<std::collate_byname<wchar_t> >(l));
         assert(&std::use_facet<std::collate<wchar_t> >(l)
             == &std::use_facet<std::collate_byname<wchar_t> >(l));
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.collate/locale.collate/ctor.pass.cpp b/test/std/localization/locale.categories/category.collate/locale.collate/ctor.pass.cpp
index eb8003e..024d61f 100644
--- a/test/std/localization/locale.categories/category.collate/locale.collate/ctor.pass.cpp
+++ b/test/std/localization/locale.categories/category.collate/locale.collate/ctor.pass.cpp
@@ -50,6 +50,8 @@
         assert(my_facet<char>::count == 1);
     }
     assert(my_facet<char>::count == 0);
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::locale l(std::locale::classic(), new my_facet<wchar_t>);
         assert(my_facet<wchar_t>::count == 1);
@@ -65,6 +67,7 @@
         assert(my_facet<wchar_t>::count == 1);
     }
     assert(my_facet<wchar_t>::count == 0);
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.collate/locale.collate/locale.collate.members/compare.pass.cpp b/test/std/localization/locale.categories/category.collate/locale.collate/locale.collate.members/compare.pass.cpp
index 7e2833b..a3023cf 100644
--- a/test/std/localization/locale.categories/category.collate/locale.collate/locale.collate.members/compare.pass.cpp
+++ b/test/std/localization/locale.categories/category.collate/locale.collate/locale.collate.members/compare.pass.cpp
@@ -37,6 +37,7 @@
         assert(f.compare(ib+1, ib+3, ia, ia+sa) == 1);
         assert(f.compare(ia, ia+3, ib, ib+3) == 0);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         const wchar_t ia[] = L"1234";
         const unsigned sa = sizeof(ia)/sizeof(ia[0]);
@@ -50,6 +51,7 @@
         assert(f.compare(ib+1, ib+3, ia, ia+sa) == 1);
         assert(f.compare(ia, ia+3, ib, ib+3) == 0);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.collate/locale.collate/locale.collate.members/hash.pass.cpp b/test/std/localization/locale.categories/category.collate/locale.collate/locale.collate.members/hash.pass.cpp
index 777ba4b..7a298c5 100644
--- a/test/std/localization/locale.categories/category.collate/locale.collate/locale.collate.members/hash.pass.cpp
+++ b/test/std/localization/locale.categories/category.collate/locale.collate/locale.collate.members/hash.pass.cpp
@@ -33,6 +33,7 @@
         assert(f.hash(x1.data(), x1.data() + x1.size())
             != f.hash(x2.data(), x2.data() + x2.size()));
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wstring x1(L"1234");
         std::wstring x2(L"12345");
@@ -40,6 +41,7 @@
         assert(f.hash(x1.data(), x1.data() + x1.size())
             != f.hash(x2.data(), x2.data() + x2.size()));
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.collate/locale.collate/locale.collate.members/transform.pass.cpp b/test/std/localization/locale.categories/category.collate/locale.collate/locale.collate.members/transform.pass.cpp
index 0f1bf22..fdee9d7 100644
--- a/test/std/localization/locale.categories/category.collate/locale.collate/locale.collate.members/transform.pass.cpp
+++ b/test/std/localization/locale.categories/category.collate/locale.collate/locale.collate.members/transform.pass.cpp
@@ -26,11 +26,13 @@
         const std::collate<char>& f = std::use_facet<std::collate<char> >(l);
         assert(f.transform(x.data(), x.data() + x.size()) == x);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wstring x(L"1234");
         const std::collate<wchar_t>& f = std::use_facet<std::collate<wchar_t> >(l);
         assert(f.transform(x.data(), x.data() + x.size()) == x);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.collate/locale.collate/types.pass.cpp b/test/std/localization/locale.categories/category.collate/locale.collate/types.pass.cpp
index 1742e6a..6990fff 100644
--- a/test/std/localization/locale.categories/category.collate/locale.collate/types.pass.cpp
+++ b/test/std/localization/locale.categories/category.collate/locale.collate/types.pass.cpp
@@ -38,6 +38,7 @@
         static_assert((std::is_same<std::collate<char>::string_type, std::string>::value), "");
         static_assert((std::is_base_of<std::locale::facet, std::collate<char> >::value), "");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         assert(std::has_facet<std::collate<wchar_t> >(l));
         const std::collate<wchar_t>& f = std::use_facet<std::collate<wchar_t> >(l);
@@ -49,6 +50,7 @@
         static_assert((std::is_same<std::collate<wchar_t>::string_type, std::wstring>::value), "");
         static_assert((std::is_base_of<std::locale::facet, std::collate<wchar_t> >::value), "");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.ctype/locale.codecvt.byname/ctor_wchar_t.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.codecvt.byname/ctor_wchar_t.pass.cpp
index 8b1ae46..a5dd77b 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.codecvt.byname/ctor_wchar_t.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.codecvt.byname/ctor_wchar_t.pass.cpp
@@ -15,6 +15,8 @@
 // explicit codecvt_byname(const char* nm, size_t refs = 0);
 // explicit codecvt_byname(const string& nm, size_t refs = 0);
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <cassert>
 
diff --git a/test/std/localization/locale.categories/category.ctype/locale.codecvt/ctor_wchar_t.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.codecvt/ctor_wchar_t.pass.cpp
index c5abf8a..a10aa75 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.codecvt/ctor_wchar_t.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.codecvt/ctor_wchar_t.pass.cpp
@@ -12,6 +12,8 @@
 
 // explicit codecvt(size_t refs = 0);
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <cassert>
 
diff --git a/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_always_noconv.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_always_noconv.pass.cpp
index 10ea879..dde8385 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_always_noconv.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_always_noconv.pass.cpp
@@ -12,6 +12,8 @@
 
 // bool always_noconv() const throw();
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <cassert>
 
diff --git a/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_encoding.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_encoding.pass.cpp
index e46754e..5a6a99d 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_encoding.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_encoding.pass.cpp
@@ -12,6 +12,8 @@
 
 // int encoding() const throw();
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <cassert>
 
diff --git a/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_in.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_in.pass.cpp
index 832aedf..b3c6f71 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_in.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_in.pass.cpp
@@ -14,6 +14,8 @@
 //           const externT* from, const externT* from_end, const externT*& from_next,
 //           internT* to, internT* to_end, internT*& to_next) const;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <string>
 #include <vector>
diff --git a/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_length.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_length.pass.cpp
index 536bab4..997712b 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_length.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_length.pass.cpp
@@ -12,6 +12,8 @@
 
 // int length(stateT& state, const externT* from, const externT* from_end, size_t max) const;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <cassert>
 
diff --git a/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_max_length.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_max_length.pass.cpp
index 8e58726..2831e26 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_max_length.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_max_length.pass.cpp
@@ -12,6 +12,8 @@
 
 // int max_length() const throw();
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <cassert>
 
diff --git a/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_out.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_out.pass.cpp
index 90caf5e..1fd7faf 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_out.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_out.pass.cpp
@@ -14,6 +14,8 @@
 //            const internT* from, const internT* from_end, const internT*& from_next,
 //            externT* to, externT* to_end, externT*& to_next) const;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <string>
 #include <vector>
diff --git a/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_unshift.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_unshift.pass.cpp
index bc7246f..ad61fb6 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_unshift.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_unshift.pass.cpp
@@ -13,6 +13,8 @@
 // result unshift(stateT& state,
 //                externT* to, externT* to_end, externT*& to_next) const;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 // This is pretty much just an "are you breathing" test
 
 #include <locale>
diff --git a/test/std/localization/locale.categories/category.ctype/locale.codecvt/types_wchar_t.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.codecvt/types_wchar_t.pass.cpp
index da36774..e108491 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.codecvt/types_wchar_t.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.codecvt/types_wchar_t.pass.cpp
@@ -20,6 +20,8 @@
 //     ...
 // };
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <type_traits>
 #include <cassert>
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/is_1.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/is_1.pass.cpp
index d033ec9..04ab910 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/is_1.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/is_1.pass.cpp
@@ -14,6 +14,7 @@
 
 // REQUIRES: locale.en_US.UTF-8
 // XFAIL: LIBCXX-WINDOWS-FIXME
+// XFAIL: libcpp-has-no-wide-characters
 
 #include <locale>
 #include <type_traits>
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/is_many.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/is_many.pass.cpp
index 97ffeb2..4f163d7 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/is_many.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/is_many.pass.cpp
@@ -14,6 +14,7 @@
 
 // REQUIRES: locale.en_US.UTF-8
 // XFAIL: LIBCXX-WINDOWS-FIXME
+// XFAIL: libcpp-has-no-wide-characters
 
 #include <locale>
 #include <string>
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/mask.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/mask.pass.cpp
index d9ca398..6f2452e 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/mask.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/mask.pass.cpp
@@ -20,37 +20,42 @@
 
 int main(int, char**)
 {
+    std::locale l("C");
     {
-        std::locale l("C");
-        {
-            typedef std::ctype<wchar_t> WF;
-            const WF& wf = std::use_facet<WF>(l);
-            typedef std::ctype<char> CF;
-            const CF& cf = std::use_facet<CF>(l);
+        typedef std::ctype<char> CF;
+        const CF& cf = std::use_facet<CF>(l);
 
-            // The ctype masks in Newlib don't form a proper bitmask because
-            // the mask is only 8 bits wide, and there are more than 8 mask
-            // kinds. This means that the mask for alpha is (_U | _L), which
-            // is tricky to match in the do_is implementation because in
-            // [22.4.1.1.2 2] the standard specifies that the match code behaves
-            // like (m & M) != 0, but following this exactly would give false
-            // positives for characters that are both 'upper' and 'alpha', but
-            // not 'lower', for example.
-            assert( wf.is(WF::upper, L'A'));
-            assert( cf.is(CF::upper,  'A'));
-            assert(!wf.is(WF::lower, L'A'));
-            assert(!cf.is(CF::lower,  'A'));
-            assert( wf.is(WF::alpha, L'A'));
-            assert( cf.is(CF::alpha,  'A'));
+        // NOTE:
+        // The ctype masks in Newlib don't form a proper bitmask because
+        // the mask is only 8 bits wide, and there are more than 8 mask
+        // kinds. This means that the mask for alpha is (_U | _L), which
+        // is tricky to match in the do_is implementation because in
+        // [22.4.1.1.2 2] the standard specifies that the match code behaves
+        // like (m & M) != 0, but following this exactly would give false
+        // positives for characters that are both 'upper' and 'alpha', but
+        // not 'lower', for example.
+        assert( cf.is(CF::upper,  'A'));
+        assert(!cf.is(CF::lower,  'A'));
+        assert( cf.is(CF::alpha,  'A'));
 
-            assert(!wf.is(WF::upper, L'a'));
-            assert(!cf.is(CF::upper,  'a'));
-            assert( wf.is(WF::lower, L'a'));
-            assert( cf.is(CF::lower,  'a'));
-            assert( wf.is(WF::alpha, L'a'));
-            assert( cf.is(CF::alpha,  'a'));
-        }
+        assert(!cf.is(CF::upper,  'a'));
+        assert( cf.is(CF::lower,  'a'));
+        assert( cf.is(CF::alpha,  'a'));
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    {
+        typedef std::ctype<wchar_t> WF;
+        const WF& wf = std::use_facet<WF>(l);
+
+        assert( wf.is(WF::upper, L'A'));
+        assert(!wf.is(WF::lower, L'A'));
+        assert( wf.is(WF::alpha, L'A'));
+
+        assert(!wf.is(WF::upper, L'a'));
+        assert( wf.is(WF::lower, L'a'));
+        assert( wf.is(WF::alpha, L'a'));
+    }
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/narrow_1.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/narrow_1.pass.cpp
index b819b62..2c2f9b6 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/narrow_1.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/narrow_1.pass.cpp
@@ -9,6 +9,7 @@
 // REQUIRES: locale.en_US.UTF-8
 // REQUIRES: locale.fr_CA.ISO8859-1
 // XFAIL: LIBCXX-WINDOWS-FIXME
+// XFAIL: libcpp-has-no-wide-characters
 
 // <locale>
 
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/narrow_many.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/narrow_many.pass.cpp
index 3f8e538..8cb1e22 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/narrow_many.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/narrow_many.pass.cpp
@@ -9,6 +9,7 @@
 // REQUIRES: locale.en_US.UTF-8
 // REQUIRES: locale.fr_CA.ISO8859-1
 // XFAIL: LIBCXX-WINDOWS-FIXME
+// XFAIL: libcpp-has-no-wide-characters
 
 // <locale>
 
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/scan_is.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/scan_is.pass.cpp
index 2329d9b..24d0010 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/scan_is.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/scan_is.pass.cpp
@@ -14,6 +14,7 @@
 
 // REQUIRES: locale.en_US.UTF-8
 // XFAIL: LIBCXX-WINDOWS-FIXME
+// XFAIL: libcpp-has-no-wide-characters
 
 #include <locale>
 #include <string>
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/scan_not.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/scan_not.pass.cpp
index 39e1bd5..7e3c818 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/scan_not.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/scan_not.pass.cpp
@@ -14,6 +14,7 @@
 
 // REQUIRES: locale.en_US.UTF-8
 // XFAIL: LIBCXX-WINDOWS-FIXME
+// XFAIL: libcpp-has-no-wide-characters
 
 #include <locale>
 #include <string>
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_1.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_1.pass.cpp
index 702d84a..a85f89f 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_1.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_1.pass.cpp
@@ -55,6 +55,7 @@
             assert(f.tolower('\xFA') == '\xFA');
         }
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::locale l;
         {
@@ -89,6 +90,7 @@
             assert(f.tolower(L'\xFA') == L'\xFA');
         }
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_many.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_many.pass.cpp
index 7965239..8363b57 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_many.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_many.pass.cpp
@@ -59,6 +59,7 @@
             assert(in[6] == '1');
         }
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::locale l;
         {
@@ -95,6 +96,7 @@
             assert(in[6] == L'1');
         }
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_1.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_1.pass.cpp
index dd4f80d..503cb19 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_1.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_1.pass.cpp
@@ -57,6 +57,7 @@
             assert(f.toupper('\xFA') == '\xFA');
         }
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::locale l;
         {
@@ -91,6 +92,7 @@
             assert(f.toupper(L'\xFA') == L'\xFA');
         }
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_many.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_many.pass.cpp
index d66b5f1..ffb3b7e 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_many.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_many.pass.cpp
@@ -59,6 +59,7 @@
             assert(in[6] == '1');
         }
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::locale l;
         {
@@ -95,6 +96,7 @@
             assert(in[6] == L'1');
         }
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/types.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/types.pass.cpp
index 9fb4c44..81760b8 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/types.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/types.pass.cpp
@@ -38,11 +38,13 @@
             assert(&std::use_facet<std::ctype<char> >(l)
                 == &std::use_facet<std::ctype_byname<char> >(l));
         }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         {
             assert(std::has_facet<std::ctype_byname<wchar_t> >(l));
             assert(&std::use_facet<std::ctype<wchar_t> >(l)
                 == &std::use_facet<std::ctype_byname<wchar_t> >(l));
         }
+#endif
     }
     {
         std::locale l("C");
@@ -51,11 +53,13 @@
             assert(&std::use_facet<std::ctype<char> >(l)
                 == &std::use_facet<std::ctype_byname<char> >(l));
         }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         {
             assert(std::has_facet<std::ctype_byname<wchar_t> >(l));
             assert(&std::use_facet<std::ctype<wchar_t> >(l)
                 == &std::use_facet<std::ctype_byname<wchar_t> >(l));
         }
+#endif
     }
 
   return 0;
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/widen_1.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/widen_1.pass.cpp
index 2d096e9..f737feb 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/widen_1.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/widen_1.pass.cpp
@@ -8,6 +8,7 @@
 
 // REQUIRES: locale.en_US.UTF-8
 // XFAIL: LIBCXX-WINDOWS-FIXME
+// XFAIL: libcpp-has-no-wide-characters
 
 // <locale>
 
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/widen_many.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/widen_many.pass.cpp
index 3550c54..d50639b 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/widen_many.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/widen_many.pass.cpp
@@ -8,6 +8,7 @@
 
 // REQUIRES: locale.en_US.UTF-8
 // XFAIL: LIBCXX-WINDOWS-FIXME
+// XFAIL: libcpp-has-no-wide-characters
 
 // <locale>
 
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype/ctor.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype/ctor.pass.cpp
index ab7d149..c43e9e6 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.ctype/ctor.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.ctype/ctor.pass.cpp
@@ -12,6 +12,8 @@
 
 // explicit ctype(size_t refs = 0);
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <cassert>
 
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/is_1.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/is_1.pass.cpp
index b5c897b..df7981a 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/is_1.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/is_1.pass.cpp
@@ -12,6 +12,8 @@
 
 // bool is(mask m, charT c) const;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <cassert>
 
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/is_many.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/is_many.pass.cpp
index 6f0da92..f95e58e 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/is_many.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/is_many.pass.cpp
@@ -12,6 +12,8 @@
 
 // const charT* do_is(const charT* low, const charT* high, mask* vec) const;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <string>
 #include <vector>
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/narrow_1.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/narrow_1.pass.cpp
index d973214..6477247 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/narrow_1.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/narrow_1.pass.cpp
@@ -12,6 +12,8 @@
 
 // char narrow(charT c, char dfault) const;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <cassert>
 
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/narrow_many.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/narrow_many.pass.cpp
index 9709620..db5f8ae 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/narrow_many.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/narrow_many.pass.cpp
@@ -12,6 +12,8 @@
 
 // const charT* narrow(const charT* low, const charT*, char dfault, char* to) const;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <string>
 #include <vector>
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/scan_is.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/scan_is.pass.cpp
index 95921a4..864c20f 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/scan_is.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/scan_is.pass.cpp
@@ -12,6 +12,8 @@
 
 // const charT* scan_is(mask m, const charT* low, const charT* high) const;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <string>
 #include <vector>
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/scan_not.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/scan_not.pass.cpp
index 6e778d3..41362cf 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/scan_not.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/scan_not.pass.cpp
@@ -12,6 +12,8 @@
 
 // const charT* scan_not(mask m, const charT* low, const charT* high) const;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <string>
 #include <vector>
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/tolower_1.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/tolower_1.pass.cpp
index e8fbb51..50628ad 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/tolower_1.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/tolower_1.pass.cpp
@@ -12,6 +12,8 @@
 
 // charT tolower(charT) const;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <cassert>
 
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/tolower_many.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/tolower_many.pass.cpp
index 29a4dcd..d93d51d 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/tolower_many.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/tolower_many.pass.cpp
@@ -12,6 +12,8 @@
 
 // const charT* tolower(charT* low, const charT* high) const;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <string>
 #include <cassert>
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/toupper_1.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/toupper_1.pass.cpp
index 15e036f..3905161 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/toupper_1.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/toupper_1.pass.cpp
@@ -12,6 +12,8 @@
 
 // charT toupper(charT) const;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <cassert>
 
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/toupper_many.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/toupper_many.pass.cpp
index 431b01a..70bb0fd 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/toupper_many.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/toupper_many.pass.cpp
@@ -12,6 +12,8 @@
 
 // const charT* toupper(charT* low, const charT* high) const;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <string>
 #include <cassert>
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/widen_1.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/widen_1.pass.cpp
index 03d753e..7cdc832 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/widen_1.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/widen_1.pass.cpp
@@ -12,6 +12,8 @@
 
 // charT widen(char c) const;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <cassert>
 
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/widen_many.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/widen_many.pass.cpp
index de3027f..eb600d7 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/widen_many.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/widen_many.pass.cpp
@@ -12,6 +12,8 @@
 
 // const char* widen(const char* low, const char* high, charT* to) const;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <string>
 #include <vector>
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype/types.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype/types.pass.cpp
index 4dd30bb..a1e7ced 100644
--- a/test/std/localization/locale.categories/category.ctype/locale.ctype/types.pass.cpp
+++ b/test/std/localization/locale.categories/category.ctype/locale.ctype/types.pass.cpp
@@ -17,6 +17,8 @@
 //     typedef CharT char_type;
 // };
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <type_traits>
 #include <cassert>
diff --git a/test/std/localization/locale.categories/category.messages/locale.messages/types.pass.cpp b/test/std/localization/locale.categories/category.messages/locale.messages/types.pass.cpp
index 58b7854..58348de 100644
--- a/test/std/localization/locale.categories/category.messages/locale.messages/types.pass.cpp
+++ b/test/std/localization/locale.categories/category.messages/locale.messages/types.pass.cpp
@@ -26,12 +26,15 @@
 {
     static_assert((std::is_base_of<std::locale::facet, std::messages<char> >::value), "");
     static_assert((std::is_base_of<std::messages_base, std::messages<char> >::value), "");
+    static_assert((std::is_same<std::messages<char>::char_type, char>::value), "");
+    static_assert((std::is_same<std::messages<char>::string_type, std::string>::value), "");
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     static_assert((std::is_base_of<std::locale::facet, std::messages<wchar_t> >::value), "");
     static_assert((std::is_base_of<std::messages_base, std::messages<wchar_t> >::value), "");
-    static_assert((std::is_same<std::messages<char>::char_type, char>::value), "");
     static_assert((std::is_same<std::messages<wchar_t>::char_type, wchar_t>::value), "");
-    static_assert((std::is_same<std::messages<char>::string_type, std::string>::value), "");
     static_assert((std::is_same<std::messages<wchar_t>::string_type, std::wstring>::value), "");
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_en_US.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_en_US.pass.cpp
index 24167bb..df51cd9 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_en_US.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_en_US.pass.cpp
@@ -35,6 +35,7 @@
         : Fn(refs) {}
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 typedef std::money_get<wchar_t, cpp17_input_iterator<const wchar_t*> > Fw;
 
 class my_facetw
@@ -44,6 +45,7 @@
     explicit my_facetw(std::size_t refs = 0)
         : Fw(refs) {}
 };
+#endif
 
 int main(int, char**)
 {
@@ -53,10 +55,12 @@
                           new std::moneypunct_byname<char, false>(loc_name)));
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<char, true>(loc_name)));
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<wchar_t, false>(loc_name)));
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<wchar_t, true>(loc_name)));
+#endif
     {
         const my_facet f(1);
         // char, national
@@ -389,6 +393,7 @@
             assert(err == std::ios_base::failbit);
         }
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         const my_facetw f(1);
         // wchar_t, national
@@ -721,6 +726,7 @@
             assert(err == std::ios_base::failbit);
         }
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
     {
       // test for err
       const my_facet f(1);
diff --git a/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_fr_FR.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_fr_FR.pass.cpp
index 20bcfdd..591d7f4 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_fr_FR.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_fr_FR.pass.cpp
@@ -41,6 +41,7 @@
         : Fn(refs) {}
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 typedef std::money_get<wchar_t, cpp17_input_iterator<const wchar_t*> > Fw;
 
 class my_facetw
@@ -77,6 +78,7 @@
   return in;
 #endif
 }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
 int main(int, char**)
 {
@@ -86,10 +88,12 @@
                           new std::moneypunct_byname<char, false>(loc_name)));
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<char, true>(loc_name)));
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<wchar_t, false>(loc_name)));
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<wchar_t, true>(loc_name)));
+#endif
     {
         const my_facet f(1);
         // char, national
@@ -423,6 +427,7 @@
             assert(ex == 123456789);
         }
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         const my_facetw f(1);
         // wchar_t, national
@@ -755,6 +760,7 @@
             assert(ex == 123456789);
         }
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_ru_RU.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_ru_RU.pass.cpp
index 5963aee..ff33764 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_ru_RU.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_ru_RU.pass.cpp
@@ -58,6 +58,7 @@
         : Fn(refs) {}
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 typedef std::money_get<wchar_t, cpp17_input_iterator<const wchar_t*> > Fw;
 
 class my_facetw
@@ -67,6 +68,7 @@
     explicit my_facetw(std::size_t refs = 0)
         : Fw(refs) {}
 };
+#endif
 
 int main(int, char**)
 {
@@ -76,10 +78,12 @@
                           new std::moneypunct_byname<char, false>(loc_name)));
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<char, true>(loc_name)));
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<wchar_t, false>(loc_name)));
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<wchar_t, true>(loc_name)));
+#endif
     {
         const my_facet f(1);
         // char, national
@@ -422,6 +426,7 @@
             assert(ex == -123456789);
         }
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         const my_facetw f(1);
         // wchar_t, national
@@ -764,6 +769,7 @@
             assert(ex == -123456789);
         }
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_zh_CN.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_zh_CN.pass.cpp
index 8cf77b4..3e59cfd 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_zh_CN.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_zh_CN.pass.cpp
@@ -42,6 +42,7 @@
         : Fn(refs) {}
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 typedef std::money_get<wchar_t, cpp17_input_iterator<const wchar_t*> > Fw;
 
 class my_facetw
@@ -51,6 +52,7 @@
     explicit my_facetw(std::size_t refs = 0)
         : Fw(refs) {}
 };
+#endif
 
 int main(int, char**)
 {
@@ -60,10 +62,12 @@
                           new std::moneypunct_byname<char, false>(loc_name)));
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<char, true>(loc_name)));
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<wchar_t, false>(loc_name)));
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<wchar_t, true>(loc_name)));
+#endif
     {
         const my_facet f(1);
         // char, national
@@ -396,6 +400,7 @@
             assert(err == std::ios_base::failbit);
         }
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         const my_facetw f(1);
         // wchar_t, national
@@ -728,6 +733,7 @@
             assert(err == std::ios_base::failbit);
         }
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_string_en_US.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_string_en_US.pass.cpp
index 08119ec..4e0c059 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_string_en_US.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_string_en_US.pass.cpp
@@ -35,6 +35,7 @@
         : Fn(refs) {}
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 typedef std::money_get<wchar_t, cpp17_input_iterator<const wchar_t*> > Fw;
 
 class my_facetw
@@ -44,6 +45,7 @@
     explicit my_facetw(std::size_t refs = 0)
         : Fw(refs) {}
 };
+#endif
 
 int main(int, char**)
 {
@@ -53,10 +55,12 @@
                           new std::moneypunct_byname<char, false>(loc_name)));
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<char, true>(loc_name)));
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<wchar_t, false>(loc_name)));
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<wchar_t, true>(loc_name)));
+#endif
     {
         const my_facet f(1);
         // char, national
@@ -393,6 +397,7 @@
             assert(ex == "");
         }
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         const my_facetw f(1);
         // wchar_t, national
@@ -729,6 +734,7 @@
             assert(ex == L"");
         }
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
     {
       // test for err
       const my_facet f(1);
diff --git a/test/std/localization/locale.categories/category.monetary/locale.money.get/types.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.money.get/types.pass.cpp
index ed4baad..5459f9e 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.money.get/types.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.money.get/types.pass.cpp
@@ -25,13 +25,16 @@
 int main(int, char**)
 {
     static_assert((std::is_base_of<std::locale::facet, std::money_get<char> >::value), "");
-    static_assert((std::is_base_of<std::locale::facet, std::money_get<wchar_t> >::value), "");
     static_assert((std::is_same<std::money_get<char>::char_type, char>::value), "");
-    static_assert((std::is_same<std::money_get<wchar_t>::char_type, wchar_t>::value), "");
     static_assert((std::is_same<std::money_get<char>::iter_type, std::istreambuf_iterator<char> >::value), "");
-    static_assert((std::is_same<std::money_get<wchar_t>::iter_type, std::istreambuf_iterator<wchar_t> >::value), "");
     static_assert((std::is_same<std::money_get<char>::string_type, std::string>::value), "");
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    static_assert((std::is_base_of<std::locale::facet, std::money_get<wchar_t> >::value), "");
+    static_assert((std::is_same<std::money_get<wchar_t>::char_type, wchar_t>::value), "");
+    static_assert((std::is_same<std::money_get<wchar_t>::iter_type, std::istreambuf_iterator<wchar_t> >::value), "");
     static_assert((std::is_same<std::money_get<wchar_t>::string_type, std::wstring>::value), "");
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_en_US.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_en_US.pass.cpp
index bf47e14..d74f25b 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_en_US.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_en_US.pass.cpp
@@ -35,6 +35,7 @@
         : Fn(refs) {}
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 typedef std::money_put<wchar_t, output_iterator<wchar_t*> > Fw;
 
 class my_facetw
@@ -44,6 +45,7 @@
     explicit my_facetw(std::size_t refs = 0)
         : Fw(refs) {}
 };
+#endif
 
 int main(int, char**)
 {
@@ -53,10 +55,12 @@
                           new std::moneypunct_byname<char, false>(loc_name)));
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<char, true>(loc_name)));
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<wchar_t, false>(loc_name)));
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<wchar_t, true>(loc_name)));
+#endif
 {
     const my_facet f(1);
     // char, national
@@ -273,8 +277,8 @@
         assert(ios.width() == 0);
     }
 }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 {
-
     const my_facetw f(1);
     // wchar_t, national
     noshowbase(ios);
@@ -492,6 +496,7 @@
         assert(ios.width() == 0);
     }
 }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_fr_FR.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_fr_FR.pass.cpp
index 6b23343..e20cb97 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_fr_FR.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_fr_FR.pass.cpp
@@ -41,6 +41,7 @@
         : Fn(refs) {}
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 typedef std::money_put<wchar_t, output_iterator<wchar_t*> > Fw;
 
 class my_facetw
@@ -79,6 +80,7 @@
   return in;
 #endif
 }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
 int main(int, char**)
 {
@@ -88,10 +90,12 @@
                           new std::moneypunct_byname<char, false>(loc_name)));
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<char, true>(loc_name)));
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<wchar_t, false>(loc_name)));
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<wchar_t, true>(loc_name)));
+#endif
 {
     const my_facet f(1);
     // char, national
@@ -308,6 +312,7 @@
         assert(ios.width() == 0);
     }
 }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 {
     const my_facetw f(1);
     // wchar_t, national
@@ -526,6 +531,7 @@
         assert(ios.width() == 0);
     }
 }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_ru_RU.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_ru_RU.pass.cpp
index 1d73718..81b2b39 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_ru_RU.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_ru_RU.pass.cpp
@@ -58,6 +58,7 @@
         : Fn(refs) {}
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 typedef std::money_put<wchar_t, output_iterator<wchar_t*> > Fw;
 
 class my_facetw
@@ -67,6 +68,7 @@
     explicit my_facetw(std::size_t refs = 0)
         : Fw(refs) {}
 };
+#endif
 
 int main(int, char**)
 {
@@ -76,10 +78,12 @@
                           new std::moneypunct_byname<char, false>(loc_name)));
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<char, true>(loc_name)));
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<wchar_t, false>(loc_name)));
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<wchar_t, true>(loc_name)));
+#endif
 {
     const my_facet f(1);
     // char, national
@@ -116,7 +120,7 @@
         std::string ex(str, iter.base());
         assert(ex == "-1 234 567,89 ");
     }
-#endif
+#endif // APPLE_FIXME
     {   // zero, showbase
         long double v = 0;
         showbase(ios);
@@ -262,7 +266,7 @@
         std::string ex(str, iter.base());
         assert(ex == "-1 234 567,89 RUB ");
     }
-#endif
+#endif // APPLE_FIXME
     {   // negative, showbase, left
         long double v = -123456789;
         showbase(ios);
@@ -300,8 +304,9 @@
         assert(ex == "  -1 234 567,89 RUB ");
         assert(ios.width() == 0);
     }
-#endif
+#endif // APPLE_FIXME
 }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 {
     const my_facetw f(1);
     // wchar_t, national
@@ -340,7 +345,7 @@
         std::wstring ex(str, iter.base());
         assert(ex == L"-1 234 567,89 ");
     }
-#endif
+#endif // APPLE_FIXME
     {   // zero, showbase
         long double v = 0;
         showbase(ios);
@@ -486,7 +491,7 @@
         std::wstring ex(str, iter.base());
         assert(ex == L"-1 234 567,89 RUB ");
     }
-#endif
+#endif // APPLE_FIXME
     {   // negative, showbase, left
         long double v = -123456789;
         showbase(ios);
@@ -524,8 +529,9 @@
         assert(ex == L"  -1 234 567,89 RUB ");
         assert(ios.width() == 0);
     }
-#endif
+#endif // APPLE_FIXME
 }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_zh_CN.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_zh_CN.pass.cpp
index 0e5254c..a19b17c 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_zh_CN.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_zh_CN.pass.cpp
@@ -42,6 +42,7 @@
         : Fn(refs) {}
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 typedef std::money_put<wchar_t, output_iterator<wchar_t*> > Fw;
 
 class my_facetw
@@ -51,6 +52,7 @@
     explicit my_facetw(std::size_t refs = 0)
         : Fw(refs) {}
 };
+#endif
 
 int main(int, char**)
 {
@@ -60,10 +62,12 @@
                           new std::moneypunct_byname<char, false>(loc_name)));
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<char, true>(loc_name)));
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<wchar_t, false>(loc_name)));
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<wchar_t, true>(loc_name)));
+#endif
 {
     const my_facet f(1);
     // char, national
@@ -280,6 +284,7 @@
         assert(ios.width() == 0);
     }
 }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 {
     const my_facetw f(1);
     // wchar_t, national
@@ -498,6 +503,7 @@
         assert(ios.width() == 0);
     }
 }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_string_en_US.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_string_en_US.pass.cpp
index a060250..1f300ef 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_string_en_US.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_string_en_US.pass.cpp
@@ -36,6 +36,7 @@
         : Fn(refs) {}
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 typedef std::money_put<wchar_t, output_iterator<wchar_t*> > Fw;
 
 class my_facetw
@@ -45,6 +46,7 @@
     explicit my_facetw(std::size_t refs = 0)
         : Fw(refs) {}
 };
+#endif
 
 int main(int, char**)
 {
@@ -54,10 +56,12 @@
                           new std::moneypunct_byname<char, false>(loc_name)));
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<char, true>(loc_name)));
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<wchar_t, false>(loc_name)));
     ios.imbue(std::locale(ios.getloc(),
                           new std::moneypunct_byname<wchar_t, true>(loc_name)));
+#endif
 {
     const my_facet f(1);
     // char, national
@@ -274,8 +278,8 @@
         assert(ios.width() == 0);
     }
 }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 {
-
     const my_facetw f(1);
     // wchar_t, national
     noshowbase(ios);
@@ -493,6 +497,7 @@
         assert(ios.width() == 0);
     }
 }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.monetary/locale.money.put/types.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.money.put/types.pass.cpp
index 4ac5487..a79ce5c 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.money.put/types.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.money.put/types.pass.cpp
@@ -25,13 +25,16 @@
 int main(int, char**)
 {
     static_assert((std::is_base_of<std::locale::facet, std::money_put<char> >::value), "");
-    static_assert((std::is_base_of<std::locale::facet, std::money_put<wchar_t> >::value), "");
     static_assert((std::is_same<std::money_put<char>::char_type, char>::value), "");
-    static_assert((std::is_same<std::money_put<wchar_t>::char_type, wchar_t>::value), "");
     static_assert((std::is_same<std::money_put<char>::iter_type, std::ostreambuf_iterator<char> >::value), "");
-    static_assert((std::is_same<std::money_put<wchar_t>::iter_type, std::ostreambuf_iterator<wchar_t> >::value), "");
     static_assert((std::is_same<std::money_put<char>::string_type, std::string>::value), "");
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    static_assert((std::is_base_of<std::locale::facet, std::money_put<wchar_t> >::value), "");
+    static_assert((std::is_same<std::money_put<wchar_t>::char_type, wchar_t>::value), "");
+    static_assert((std::is_same<std::money_put<wchar_t>::iter_type, std::ostreambuf_iterator<wchar_t> >::value), "");
     static_assert((std::is_same<std::money_put<wchar_t>::string_type, std::wstring>::value), "");
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/curr_symbol.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/curr_symbol.pass.cpp
index df0d538..99c5097 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/curr_symbol.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/curr_symbol.pass.cpp
@@ -47,6 +47,7 @@
         : std::moneypunct_byname<char, true>(nm, refs) {}
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 class Fwf
     : public std::moneypunct_byname<wchar_t, false>
 {
@@ -62,6 +63,7 @@
     explicit Fwt(const std::string& nm, std::size_t refs = 0)
         : std::moneypunct_byname<wchar_t, true>(nm, refs) {}
 };
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
 int main(int, char**)
 {
@@ -73,6 +75,7 @@
         Fnt f("C", 1);
         assert(f.curr_symbol() == std::string());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f("C", 1);
         assert(f.curr_symbol() == std::wstring());
@@ -81,6 +84,7 @@
         Fwt f("C", 1);
         assert(f.curr_symbol() == std::wstring());
     }
+#endif
 
     {
         Fnf f(LOCALE_en_US_UTF_8, 1);
@@ -90,6 +94,7 @@
         Fnt f(LOCALE_en_US_UTF_8, 1);
         assert(f.curr_symbol() == "USD ");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_en_US_UTF_8, 1);
         assert(f.curr_symbol() == L"$");
@@ -98,6 +103,7 @@
         Fwt f(LOCALE_en_US_UTF_8, 1);
         assert(f.curr_symbol() == L"USD ");
     }
+#endif
 
     {
         Fnf f(LOCALE_fr_FR_UTF_8, 1);
@@ -107,6 +113,7 @@
         Fnt f(LOCALE_fr_FR_UTF_8, 1);
         assert(f.curr_symbol() == " EUR");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_fr_FR_UTF_8, 1);
         assert(f.curr_symbol() == L" \u20ac");
@@ -115,6 +122,7 @@
         Fwt f(LOCALE_fr_FR_UTF_8, 1);
         assert(f.curr_symbol() == L" EUR");
     }
+#endif
 
     {
         Fnf f(LOCALE_ru_RU_UTF_8, 1);
@@ -134,6 +142,7 @@
         Fnt f(LOCALE_ru_RU_UTF_8, 1);
         assert(f.curr_symbol() == " RUB");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_ru_RU_UTF_8, 1);
 #if defined(_CS_GNU_LIBC_VERSION)
@@ -150,6 +159,7 @@
         Fwt f(LOCALE_ru_RU_UTF_8, 1);
         assert(f.curr_symbol() == L" RUB");
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
     {
         Fnf f(LOCALE_zh_CN_UTF_8, 1);
@@ -159,6 +169,7 @@
         Fnt f(LOCALE_zh_CN_UTF_8, 1);
         assert(f.curr_symbol() == "CNY ");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_zh_CN_UTF_8, 1);
         assert(f.curr_symbol() == L"\xFFE5");
@@ -167,6 +178,7 @@
         Fwt f(LOCALE_zh_CN_UTF_8, 1);
         assert(f.curr_symbol() == L"CNY ");
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/decimal_point.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/decimal_point.pass.cpp
index 783e4ec..2d44963 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/decimal_point.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/decimal_point.pass.cpp
@@ -40,6 +40,7 @@
         : std::moneypunct_byname<char, true>(nm, refs) {}
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 class Fwf
     : public std::moneypunct_byname<wchar_t, false>
 {
@@ -55,6 +56,7 @@
     explicit Fwt(const std::string& nm, std::size_t refs = 0)
         : std::moneypunct_byname<wchar_t, true>(nm, refs) {}
 };
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
 int main(int, char**)
 {
@@ -66,6 +68,7 @@
         Fnt f("C", 1);
         assert(f.decimal_point() == std::numeric_limits<char>::max());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f("C", 1);
         assert(f.decimal_point() == std::numeric_limits<wchar_t>::max());
@@ -74,6 +77,7 @@
         Fwt f("C", 1);
         assert(f.decimal_point() == std::numeric_limits<wchar_t>::max());
     }
+#endif
 
     {
         Fnf f(LOCALE_en_US_UTF_8, 1);
@@ -83,6 +87,7 @@
         Fnt f(LOCALE_en_US_UTF_8, 1);
         assert(f.decimal_point() == '.');
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_en_US_UTF_8, 1);
         assert(f.decimal_point() == L'.');
@@ -91,6 +96,7 @@
         Fwt f(LOCALE_en_US_UTF_8, 1);
         assert(f.decimal_point() == L'.');
     }
+#endif
 
     {
         Fnf f(LOCALE_fr_FR_UTF_8, 1);
@@ -100,6 +106,7 @@
         Fnt f(LOCALE_fr_FR_UTF_8, 1);
         assert(f.decimal_point() == ',');
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_fr_FR_UTF_8, 1);
         assert(f.decimal_point() == L',');
@@ -108,14 +115,20 @@
         Fwt f(LOCALE_fr_FR_UTF_8, 1);
         assert(f.decimal_point() == L',');
     }
+#endif
+
 // GLIBC 2.23 uses '.' as the decimal point while other C libraries use ','
 // GLIBC 2.27 corrects this
 #if defined(_CS_GNU_LIBC_VERSION)
     const char sep = glibc_version_less_than("2.27") ? '.' : ',';
+#   ifndef TEST_HAS_NO_WIDE_CHARACTERS
     const wchar_t wsep = glibc_version_less_than("2.27") ? L'.' : L',';
+#   endif
 #else
     const char sep = ',';
+#   ifndef TEST_HAS_NO_WIDE_CHARACTERS
     const wchar_t wsep = L',';
+#   endif
 #endif
     {
         Fnf f(LOCALE_ru_RU_UTF_8, 1);
@@ -125,6 +138,7 @@
         Fnt f(LOCALE_ru_RU_UTF_8, 1);
         assert(f.decimal_point() == sep);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_ru_RU_UTF_8, 1);
         assert(f.decimal_point() == wsep);
@@ -133,6 +147,7 @@
         Fwt f(LOCALE_ru_RU_UTF_8, 1);
         assert(f.decimal_point() == wsep);
     }
+#endif
 
     {
         Fnf f(LOCALE_zh_CN_UTF_8, 1);
@@ -142,6 +157,7 @@
         Fnt f(LOCALE_zh_CN_UTF_8, 1);
         assert(f.decimal_point() == '.');
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_zh_CN_UTF_8, 1);
         assert(f.decimal_point() == L'.');
@@ -150,6 +166,7 @@
         Fwt f(LOCALE_zh_CN_UTF_8, 1);
         assert(f.decimal_point() == L'.');
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/frac_digits.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/frac_digits.pass.cpp
index d022afe..b490ed4 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/frac_digits.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/frac_digits.pass.cpp
@@ -40,6 +40,7 @@
         : std::moneypunct_byname<char, true>(nm, refs) {}
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 class Fwf
     : public std::moneypunct_byname<wchar_t, false>
 {
@@ -55,6 +56,7 @@
     explicit Fwt(const std::string& nm, std::size_t refs = 0)
         : std::moneypunct_byname<wchar_t, true>(nm, refs) {}
 };
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
 int main(int, char**)
 {
@@ -66,6 +68,7 @@
         Fnt f("C", 1);
         assert(f.frac_digits() == 0);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f("C", 1);
         assert(f.frac_digits() == 0);
@@ -74,6 +77,7 @@
         Fwt f("C", 1);
         assert(f.frac_digits() == 0);
     }
+#endif
 
     {
         Fnf f(LOCALE_en_US_UTF_8, 1);
@@ -83,6 +87,7 @@
         Fnt f(LOCALE_en_US_UTF_8, 1);
         assert(f.frac_digits() == 2);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_en_US_UTF_8, 1);
         assert(f.frac_digits() == 2);
@@ -91,6 +96,7 @@
         Fwt f(LOCALE_en_US_UTF_8, 1);
         assert(f.frac_digits() == 2);
     }
+#endif
 
     {
         Fnf f(LOCALE_fr_FR_UTF_8, 1);
@@ -100,6 +106,7 @@
         Fnt f(LOCALE_fr_FR_UTF_8, 1);
         assert(f.frac_digits() == 2);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_fr_FR_UTF_8, 1);
         assert(f.frac_digits() == 2);
@@ -108,6 +115,7 @@
         Fwt f(LOCALE_fr_FR_UTF_8, 1);
         assert(f.frac_digits() == 2);
     }
+#endif
 
     {
         Fnf f(LOCALE_ru_RU_UTF_8, 1);
@@ -117,6 +125,7 @@
         Fnt f(LOCALE_ru_RU_UTF_8, 1);
         assert(f.frac_digits() == 2);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_ru_RU_UTF_8, 1);
         assert(f.frac_digits() == 2);
@@ -125,6 +134,7 @@
         Fwt f(LOCALE_ru_RU_UTF_8, 1);
         assert(f.frac_digits() == 2);
     }
+#endif
 
     {
         Fnf f(LOCALE_zh_CN_UTF_8, 1);
@@ -134,6 +144,7 @@
         Fnt f(LOCALE_zh_CN_UTF_8, 1);
         assert(f.frac_digits() == 2);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_zh_CN_UTF_8, 1);
         assert(f.frac_digits() == 2);
@@ -142,6 +153,7 @@
         Fwt f(LOCALE_zh_CN_UTF_8, 1);
         assert(f.frac_digits() == 2);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/grouping.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/grouping.pass.cpp
index 53e54c2..3dae97f 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/grouping.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/grouping.pass.cpp
@@ -47,6 +47,7 @@
         : std::moneypunct_byname<char, true>(nm, refs) {}
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 class Fwf
     : public std::moneypunct_byname<wchar_t, false>
 {
@@ -62,6 +63,7 @@
     explicit Fwt(const std::string& nm, std::size_t refs = 0)
         : std::moneypunct_byname<wchar_t, true>(nm, refs) {}
 };
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
 int main(int, char**)
 {
@@ -76,6 +78,7 @@
         Fnt f("C", 1);
         assert(f.grouping() == s || f.grouping() == "");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f("C", 1);
         assert(f.grouping() == s || f.grouping() == "");
@@ -84,6 +87,7 @@
         Fwt f("C", 1);
         assert(f.grouping() == s || f.grouping() == "");
     }
+#endif
 
     {
         Fnf f(LOCALE_en_US_UTF_8, 1);
@@ -93,6 +97,7 @@
         Fnt f(LOCALE_en_US_UTF_8, 1);
         assert(f.grouping() == "\3\3");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_en_US_UTF_8, 1);
         assert(f.grouping() == "\3\3");
@@ -101,6 +106,7 @@
         Fwt f(LOCALE_en_US_UTF_8, 1);
         assert(f.grouping() == "\3\3");
     }
+#endif
 
     {
         Fnf f(LOCALE_fr_FR_UTF_8, 1);
@@ -110,6 +116,7 @@
         Fnt f(LOCALE_fr_FR_UTF_8, 1);
         assert(f.grouping() == "\3");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_fr_FR_UTF_8, 1);
         assert(f.grouping() == "\3");
@@ -118,6 +125,7 @@
         Fwt f(LOCALE_fr_FR_UTF_8, 1);
         assert(f.grouping() == "\3");
     }
+#endif
 
     {
         Fnf f(LOCALE_ru_RU_UTF_8, 1);
@@ -127,6 +135,7 @@
         Fnt f(LOCALE_ru_RU_UTF_8, 1);
         assert(f.grouping() == "\3\3");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_ru_RU_UTF_8, 1);
         assert(f.grouping() == "\3\3");
@@ -135,6 +144,7 @@
         Fwt f(LOCALE_ru_RU_UTF_8, 1);
         assert(f.grouping() == "\3\3");
     }
+#endif
 
     {
         Fnf f(LOCALE_zh_CN_UTF_8, 1);
@@ -144,6 +154,7 @@
         Fnt f(LOCALE_zh_CN_UTF_8, 1);
         assert(f.grouping() == "\3");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_zh_CN_UTF_8, 1);
         assert(f.grouping() == "\3");
@@ -152,6 +163,7 @@
         Fwt f(LOCALE_zh_CN_UTF_8, 1);
         assert(f.grouping() == "\3");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/neg_format.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/neg_format.pass.cpp
index 5cb4216..8b85dc0 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/neg_format.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/neg_format.pass.cpp
@@ -47,6 +47,7 @@
         : std::moneypunct_byname<char, true>(nm, refs) {}
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 class Fwf
     : public std::moneypunct_byname<wchar_t, false>
 {
@@ -62,6 +63,7 @@
     explicit Fwt(const std::string& nm, std::size_t refs = 0)
         : std::moneypunct_byname<wchar_t, true>(nm, refs) {}
 };
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
 int main(int, char**)
 {
@@ -81,6 +83,7 @@
         assert(p.field[2] == std::money_base::none);
         assert(p.field[3] == std::money_base::value);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f("C", 1);
         std::money_base::pattern p = f.neg_format();
@@ -97,6 +100,7 @@
         assert(p.field[2] == std::money_base::none);
         assert(p.field[3] == std::money_base::value);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
     {
         Fnf f(LOCALE_en_US_UTF_8, 1);
@@ -114,6 +118,7 @@
         assert(p.field[2] == std::money_base::none);
         assert(p.field[3] == std::money_base::value);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_en_US_UTF_8, 1);
         std::money_base::pattern p = f.neg_format();
@@ -130,6 +135,7 @@
         assert(p.field[2] == std::money_base::none);
         assert(p.field[3] == std::money_base::value);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
     {
         Fnf f(LOCALE_fr_FR_UTF_8, 1);
@@ -147,6 +153,7 @@
         assert(p.field[2] == std::money_base::none);
         assert(p.field[3] == std::money_base::symbol);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_fr_FR_UTF_8, 1);
         std::money_base::pattern p = f.neg_format();
@@ -163,6 +170,7 @@
         assert(p.field[2] == std::money_base::none);
         assert(p.field[3] == std::money_base::symbol);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
     {
         Fnf f(LOCALE_ru_RU_UTF_8, 1);
@@ -180,6 +188,7 @@
         assert(p.field[2] == std::money_base::none);
         assert(p.field[3] == std::money_base::symbol);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_ru_RU_UTF_8, 1);
         std::money_base::pattern p = f.neg_format();
@@ -196,6 +205,7 @@
         assert(p.field[2] == std::money_base::none);
         assert(p.field[3] == std::money_base::symbol);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
     {
         Fnf f(LOCALE_zh_CN_UTF_8, 1);
@@ -213,6 +223,7 @@
         assert(p.field[2] == std::money_base::none);
         assert(p.field[3] == std::money_base::value);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_zh_CN_UTF_8, 1);
         std::money_base::pattern p = f.neg_format();
@@ -229,6 +240,7 @@
         assert(p.field[2] == std::money_base::none);
         assert(p.field[3] == std::money_base::value);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/negative_sign.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/negative_sign.pass.cpp
index 19ae001..11904d3 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/negative_sign.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/negative_sign.pass.cpp
@@ -42,6 +42,7 @@
         : std::moneypunct_byname<char, true>(nm, refs) {}
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 class Fwf
     : public std::moneypunct_byname<wchar_t, false>
 {
@@ -57,6 +58,7 @@
     explicit Fwt(const std::string& nm, std::size_t refs = 0)
         : std::moneypunct_byname<wchar_t, true>(nm, refs) {}
 };
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
 int main(int, char**)
 {
@@ -68,6 +70,7 @@
         Fnt f("C", 1);
         assert(f.negative_sign() == std::string());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f("C", 1);
         assert(f.negative_sign() == std::wstring());
@@ -76,6 +79,7 @@
         Fwt f("C", 1);
         assert(f.negative_sign() == std::wstring());
     }
+#endif
 
     {
         Fnf f(LOCALE_en_US_UTF_8, 1);
@@ -85,6 +89,7 @@
         Fnt f(LOCALE_en_US_UTF_8, 1);
         assert(f.negative_sign() == "-");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_en_US_UTF_8, 1);
         assert(f.negative_sign() == L"-");
@@ -93,6 +98,7 @@
         Fwt f(LOCALE_en_US_UTF_8, 1);
         assert(f.negative_sign() == L"-");
     }
+#endif
 
     {
         Fnf f(LOCALE_fr_FR_UTF_8, 1);
@@ -102,6 +108,7 @@
         Fnt f(LOCALE_fr_FR_UTF_8, 1);
         assert(f.negative_sign() == "-");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_fr_FR_UTF_8, 1);
         assert(f.negative_sign() == L"-");
@@ -110,6 +117,7 @@
         Fwt f(LOCALE_fr_FR_UTF_8, 1);
         assert(f.negative_sign() == L"-");
     }
+#endif
 
     {
         Fnf f(LOCALE_ru_RU_UTF_8, 1);
@@ -119,6 +127,7 @@
         Fnt f(LOCALE_ru_RU_UTF_8, 1);
         assert(f.negative_sign() == "-");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_ru_RU_UTF_8, 1);
         assert(f.negative_sign() == L"-");
@@ -127,6 +136,7 @@
         Fwt f(LOCALE_ru_RU_UTF_8, 1);
         assert(f.negative_sign() == L"-");
     }
+#endif
 
     {
         Fnf f(LOCALE_zh_CN_UTF_8, 1);
@@ -136,6 +146,7 @@
         Fnt f(LOCALE_zh_CN_UTF_8, 1);
         assert(f.negative_sign() == "-");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_zh_CN_UTF_8, 1);
         assert(f.negative_sign() == L"-");
@@ -144,6 +155,7 @@
         Fwt f(LOCALE_zh_CN_UTF_8, 1);
         assert(f.negative_sign() == L"-");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/pos_format.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/pos_format.pass.cpp
index 225c246..900d55f 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/pos_format.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/pos_format.pass.cpp
@@ -47,6 +47,7 @@
         : std::moneypunct_byname<char, true>(nm, refs) {}
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 class Fwf
     : public std::moneypunct_byname<wchar_t, false>
 {
@@ -62,6 +63,7 @@
     explicit Fwt(const std::string& nm, std::size_t refs = 0)
         : std::moneypunct_byname<wchar_t, true>(nm, refs) {}
 };
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
 int main(int, char**)
 {
@@ -81,6 +83,7 @@
         assert(p.field[2] == std::money_base::none);
         assert(p.field[3] == std::money_base::value);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f("C", 1);
         std::money_base::pattern p = f.pos_format();
@@ -97,6 +100,7 @@
         assert(p.field[2] == std::money_base::none);
         assert(p.field[3] == std::money_base::value);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
     {
         Fnf f(LOCALE_en_US_UTF_8, 1);
@@ -114,6 +118,7 @@
         assert(p.field[2] == std::money_base::none);
         assert(p.field[3] == std::money_base::value);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_en_US_UTF_8, 1);
         std::money_base::pattern p = f.pos_format();
@@ -130,6 +135,7 @@
         assert(p.field[2] == std::money_base::none);
         assert(p.field[3] == std::money_base::value);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
     {
         Fnf f(LOCALE_fr_FR_UTF_8, 1);
@@ -147,6 +153,7 @@
         assert(p.field[2] == std::money_base::none);
         assert(p.field[3] == std::money_base::symbol);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_fr_FR_UTF_8, 1);
         std::money_base::pattern p = f.pos_format();
@@ -163,6 +170,7 @@
         assert(p.field[2] == std::money_base::none);
         assert(p.field[3] == std::money_base::symbol);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
     {
         Fnf f(LOCALE_ru_RU_UTF_8, 1);
@@ -180,6 +188,7 @@
         assert(p.field[2] == std::money_base::none);
         assert(p.field[3] == std::money_base::symbol);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_ru_RU_UTF_8, 1);
         std::money_base::pattern p = f.pos_format();
@@ -196,6 +205,7 @@
         assert(p.field[2] == std::money_base::none);
         assert(p.field[3] == std::money_base::symbol);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
     {
         Fnf f(LOCALE_zh_CN_UTF_8, 1);
@@ -213,6 +223,7 @@
         assert(p.field[2] == std::money_base::none);
         assert(p.field[3] == std::money_base::value);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_zh_CN_UTF_8, 1);
         std::money_base::pattern p = f.pos_format();
@@ -229,6 +240,7 @@
         assert(p.field[2] == std::money_base::none);
         assert(p.field[3] == std::money_base::value);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/positive_sign.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/positive_sign.pass.cpp
index 7aac27b..088a09c 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/positive_sign.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/positive_sign.pass.cpp
@@ -40,6 +40,7 @@
         : std::moneypunct_byname<char, true>(nm, refs) {}
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 class Fwf
     : public std::moneypunct_byname<wchar_t, false>
 {
@@ -55,6 +56,7 @@
     explicit Fwt(const std::string& nm, std::size_t refs = 0)
         : std::moneypunct_byname<wchar_t, true>(nm, refs) {}
 };
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
 int main(int, char**)
 {
@@ -66,6 +68,7 @@
         Fnt f("C", 1);
         assert(f.positive_sign() == std::string());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f("C", 1);
         assert(f.positive_sign() == std::wstring());
@@ -74,6 +77,7 @@
         Fwt f("C", 1);
         assert(f.positive_sign() == std::wstring());
     }
+#endif
 
     {
         Fnf f(LOCALE_en_US_UTF_8, 1);
@@ -83,6 +87,7 @@
         Fnt f(LOCALE_en_US_UTF_8, 1);
         assert(f.positive_sign() == "");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_en_US_UTF_8, 1);
         assert(f.positive_sign() == L"");
@@ -91,6 +96,7 @@
         Fwt f(LOCALE_en_US_UTF_8, 1);
         assert(f.positive_sign() == L"");
     }
+#endif
 
     {
         Fnf f(LOCALE_fr_FR_UTF_8, 1);
@@ -100,6 +106,7 @@
         Fnt f(LOCALE_fr_FR_UTF_8, 1);
         assert(f.positive_sign() == "");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_fr_FR_UTF_8, 1);
         assert(f.positive_sign() == L"");
@@ -108,6 +115,7 @@
         Fwt f(LOCALE_fr_FR_UTF_8, 1);
         assert(f.positive_sign() == L"");
     }
+#endif
 
     {
         Fnf f(LOCALE_ru_RU_UTF_8, 1);
@@ -117,6 +125,7 @@
         Fnt f(LOCALE_ru_RU_UTF_8, 1);
         assert(f.positive_sign() == "");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_ru_RU_UTF_8, 1);
         assert(f.positive_sign() == L"");
@@ -125,6 +134,7 @@
         Fwt f(LOCALE_ru_RU_UTF_8, 1);
         assert(f.positive_sign() == L"");
     }
+#endif
 
     {
         Fnf f(LOCALE_zh_CN_UTF_8, 1);
@@ -134,6 +144,7 @@
         Fnt f(LOCALE_zh_CN_UTF_8, 1);
         assert(f.positive_sign() == "");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_zh_CN_UTF_8, 1);
         assert(f.positive_sign() == L"");
@@ -142,6 +153,7 @@
         Fwt f(LOCALE_zh_CN_UTF_8, 1);
         assert(f.positive_sign() == L"");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/thousands_sep.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/thousands_sep.pass.cpp
index e360124..7e8c0f0 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/thousands_sep.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/thousands_sep.pass.cpp
@@ -45,6 +45,7 @@
         : std::moneypunct_byname<char, true>(nm, refs) {}
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 class Fwf
     : public std::moneypunct_byname<wchar_t, false>
 {
@@ -60,6 +61,7 @@
     explicit Fwt(const std::string& nm, std::size_t refs = 0)
         : std::moneypunct_byname<wchar_t, true>(nm, refs) {}
 };
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
 int main(int, char**)
 {
@@ -71,6 +73,7 @@
         Fnt f("C", 1);
         assert(f.thousands_sep() == std::numeric_limits<char>::max());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f("C", 1);
         assert(f.thousands_sep() == std::numeric_limits<wchar_t>::max());
@@ -79,6 +82,7 @@
         Fwt f("C", 1);
         assert(f.thousands_sep() == std::numeric_limits<wchar_t>::max());
     }
+#endif
 
     {
         Fnf f(LOCALE_en_US_UTF_8, 1);
@@ -88,6 +92,7 @@
         Fnt f(LOCALE_en_US_UTF_8, 1);
         assert(f.thousands_sep() == ',');
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_en_US_UTF_8, 1);
         assert(f.thousands_sep() == L',');
@@ -96,6 +101,7 @@
         Fwt f(LOCALE_en_US_UTF_8, 1);
         assert(f.thousands_sep() == L',');
     }
+#endif
     {
         Fnf f(LOCALE_fr_FR_UTF_8, 1);
         assert(f.thousands_sep() == ' ');
@@ -104,7 +110,8 @@
         Fnt f(LOCALE_fr_FR_UTF_8, 1);
         assert(f.thousands_sep() == ' ');
     }
-// The below tests work around GLIBC's use of U202F as mon_thousands_sep.
+    // The below tests work around GLIBC's use of U202F as mon_thousands_sep.
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 #if defined(_CS_GNU_LIBC_VERSION)
     const wchar_t fr_sep = glibc_version_less_than("2.27") ? L' ' : L'\u202F';
 #else
@@ -118,19 +125,8 @@
         Fwt f(LOCALE_fr_FR_UTF_8, 1);
         assert(f.thousands_sep() == fr_sep);
     }
-// The below tests work around GLIBC's use of U00A0 as mon_thousands_sep
-// and U002E as mon_decimal_point.
-// TODO: Fix thousands_sep for 'char'.
-// related to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=16006
-#if defined(_CS_GNU_LIBC_VERSION)
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
     const char sep = ' ';
-    // FIXME libc++ specifically works around \u00A0 by translating it into
-    // a regular space.
-    const wchar_t wsep = glibc_version_less_than("2.27") ? L'\u00A0' : L'\u202F';
-#else
-    const char sep = ' ';
-    const wchar_t wsep = L' ';
-#endif
     {
         Fnf f(LOCALE_ru_RU_UTF_8, 1);
         assert(f.thousands_sep() == sep);
@@ -139,6 +135,18 @@
         Fnt f(LOCALE_ru_RU_UTF_8, 1);
         assert(f.thousands_sep() == sep);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    // The below tests work around GLIBC's use of U00A0 as mon_thousands_sep
+    // and U002E as mon_decimal_point.
+    // TODO: Fix thousands_sep for 'char'.
+    // related to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=16006
+#   if defined(_CS_GNU_LIBC_VERSION)
+    // FIXME libc++ specifically works around \u00A0 by translating it into
+    // a regular space.
+    const wchar_t wsep = glibc_version_less_than("2.27") ? L'\u00A0' : L'\u202F';
+#   else
+    const wchar_t wsep = L' ';
+#   endif
     {
         Fwf f(LOCALE_ru_RU_UTF_8, 1);
         assert(f.thousands_sep() == wsep);
@@ -147,6 +155,7 @@
         Fwt f(LOCALE_ru_RU_UTF_8, 1);
         assert(f.thousands_sep() == wsep);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
     {
         Fnf f(LOCALE_zh_CN_UTF_8, 1);
@@ -156,6 +165,7 @@
         Fnt f(LOCALE_zh_CN_UTF_8, 1);
         assert(f.thousands_sep() == ',');
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(LOCALE_zh_CN_UTF_8, 1);
         assert(f.thousands_sep() == L',');
@@ -164,6 +174,7 @@
         Fwt f(LOCALE_zh_CN_UTF_8, 1);
         assert(f.thousands_sep() == L',');
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/curr_symbol.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/curr_symbol.pass.cpp
index 9786fc2..51b4a16 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/curr_symbol.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/curr_symbol.pass.cpp
@@ -39,6 +39,7 @@
         : std::moneypunct<char, true>(refs) {}
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 class Fwf
     : public std::moneypunct<wchar_t, false>
 {
@@ -54,6 +55,7 @@
     explicit Fwt(std::size_t refs = 0)
         : std::moneypunct<wchar_t, true>(refs) {}
 };
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
 int main(int, char**)
 {
@@ -65,6 +67,7 @@
         Fnt f(1);
         assert(f.curr_symbol() == std::string());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(1);
         assert(f.curr_symbol() == std::wstring());
@@ -73,6 +76,7 @@
         Fwt f(1);
         assert(f.curr_symbol() == std::wstring());
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/decimal_point.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/decimal_point.pass.cpp
index 6af4826..5109c66 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/decimal_point.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/decimal_point.pass.cpp
@@ -39,6 +39,7 @@
         : std::moneypunct<char, true>(refs) {}
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 class Fwf
     : public std::moneypunct<wchar_t, false>
 {
@@ -54,6 +55,7 @@
     explicit Fwt(std::size_t refs = 0)
         : std::moneypunct<wchar_t, true>(refs) {}
 };
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
 int main(int, char**)
 {
@@ -65,6 +67,7 @@
         Fnt f(1);
         assert(f.decimal_point() == std::numeric_limits<char>::max());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(1);
         assert(f.decimal_point() == std::numeric_limits<wchar_t>::max());
@@ -73,6 +76,7 @@
         Fwt f(1);
         assert(f.decimal_point() == std::numeric_limits<wchar_t>::max());
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/frac_digits.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/frac_digits.pass.cpp
index 5b1404a..07c1f41 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/frac_digits.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/frac_digits.pass.cpp
@@ -39,6 +39,7 @@
         : std::moneypunct<char, true>(refs) {}
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 class Fwf
     : public std::moneypunct<wchar_t, false>
 {
@@ -54,6 +55,7 @@
     explicit Fwt(std::size_t refs = 0)
         : std::moneypunct<wchar_t, true>(refs) {}
 };
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
 int main(int, char**)
 {
@@ -65,6 +67,7 @@
         Fnt f(1);
         assert(f.frac_digits() == 0);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(1);
         assert(f.frac_digits() == 0);
@@ -73,6 +76,7 @@
         Fwt f(1);
         assert(f.frac_digits() == 0);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/grouping.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/grouping.pass.cpp
index c4423e5..19b1dc8 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/grouping.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/grouping.pass.cpp
@@ -39,6 +39,7 @@
         : std::moneypunct<char, true>(refs) {}
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 class Fwf
     : public std::moneypunct<wchar_t, false>
 {
@@ -54,6 +55,7 @@
     explicit Fwt(std::size_t refs = 0)
         : std::moneypunct<wchar_t, true>(refs) {}
 };
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
 int main(int, char**)
 {
@@ -65,6 +67,7 @@
         Fnt f(1);
         assert(f.grouping() == std::string());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(1);
         assert(f.grouping() == std::string());
@@ -73,6 +76,7 @@
         Fwt f(1);
         assert(f.grouping() == std::string());
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/neg_format.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/neg_format.pass.cpp
index 69f1245..4b3ac56 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/neg_format.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/neg_format.pass.cpp
@@ -36,6 +36,7 @@
         : std::moneypunct<char, true>(refs) {}
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 class Fwf
     : public std::moneypunct<wchar_t, false>
 {
@@ -51,6 +52,7 @@
     explicit Fwt(std::size_t refs = 0)
         : std::moneypunct<wchar_t, true>(refs) {}
 };
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
 int main(int, char**)
 {
@@ -70,6 +72,7 @@
         assert(p.field[2] == std::money_base::none);
         assert(p.field[3] == std::money_base::value);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(1);
         std::money_base::pattern p = f.neg_format();
@@ -86,6 +89,7 @@
         assert(p.field[2] == std::money_base::none);
         assert(p.field[3] == std::money_base::value);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/negative_sign.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/negative_sign.pass.cpp
index 6dab0b3..f102bd5 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/negative_sign.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/negative_sign.pass.cpp
@@ -40,6 +40,7 @@
         : std::moneypunct<char, true>(refs) {}
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 class Fwf
     : public std::moneypunct<wchar_t, false>
 {
@@ -55,6 +56,7 @@
     explicit Fwt(std::size_t refs = 0)
         : std::moneypunct<wchar_t, true>(refs) {}
 };
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
 int main(int, char**)
 {
@@ -66,6 +68,7 @@
         Fnt f(1);
         assert(f.negative_sign() == "-");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(1);
         assert(f.negative_sign() == L"-");
@@ -74,6 +77,7 @@
         Fwt f(1);
         assert(f.negative_sign() == L"-");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/pos_format.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/pos_format.pass.cpp
index 4df85b4..b64dac6 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/pos_format.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/pos_format.pass.cpp
@@ -36,6 +36,7 @@
         : std::moneypunct<char, true>(refs) {}
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 class Fwf
     : public std::moneypunct<wchar_t, false>
 {
@@ -51,6 +52,7 @@
     explicit Fwt(std::size_t refs = 0)
         : std::moneypunct<wchar_t, true>(refs) {}
 };
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
 int main(int, char**)
 {
@@ -70,6 +72,7 @@
         assert(p.field[2] == std::money_base::none);
         assert(p.field[3] == std::money_base::value);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(1);
         std::money_base::pattern p = f.pos_format();
@@ -86,6 +89,7 @@
         assert(p.field[2] == std::money_base::none);
         assert(p.field[3] == std::money_base::value);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/positive_sign.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/positive_sign.pass.cpp
index d6db0e9..df413f0 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/positive_sign.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/positive_sign.pass.cpp
@@ -39,6 +39,7 @@
         : std::moneypunct<char, true>(refs) {}
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 class Fwf
     : public std::moneypunct<wchar_t, false>
 {
@@ -54,6 +55,7 @@
     explicit Fwt(std::size_t refs = 0)
         : std::moneypunct<wchar_t, true>(refs) {}
 };
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
 int main(int, char**)
 {
@@ -65,6 +67,7 @@
         Fnt f(1);
         assert(f.positive_sign() == std::string());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(1);
         assert(f.positive_sign() == std::wstring());
@@ -73,6 +76,7 @@
         Fwt f(1);
         assert(f.positive_sign() == std::wstring());
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/thousands_sep.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/thousands_sep.pass.cpp
index 2cb8b9c..57600b5 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/thousands_sep.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/thousands_sep.pass.cpp
@@ -39,6 +39,7 @@
         : std::moneypunct<char, true>(refs) {}
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 class Fwf
     : public std::moneypunct<wchar_t, false>
 {
@@ -54,6 +55,7 @@
     explicit Fwt(std::size_t refs = 0)
         : std::moneypunct<wchar_t, true>(refs) {}
 };
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
 int main(int, char**)
 {
@@ -65,6 +67,7 @@
         Fnt f(1);
         assert(f.thousands_sep() == std::numeric_limits<char>::max());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         Fwf f(1);
         assert(f.thousands_sep() == std::numeric_limits<wchar_t>::max());
@@ -73,6 +76,7 @@
         Fwt f(1);
         assert(f.thousands_sep() == std::numeric_limits<wchar_t>::max());
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.monetary/locale.moneypunct/types.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.moneypunct/types.pass.cpp
index 9efd7fc..7768cb7 100644
--- a/test/std/localization/locale.categories/category.monetary/locale.moneypunct/types.pass.cpp
+++ b/test/std/localization/locale.categories/category.monetary/locale.moneypunct/types.pass.cpp
@@ -29,18 +29,20 @@
 int main(int, char**)
 {
     static_assert((std::is_base_of<std::locale::facet, std::moneypunct<char> >::value), "");
-    static_assert((std::is_base_of<std::locale::facet, std::moneypunct<wchar_t> >::value), "");
     static_assert((std::is_base_of<std::money_base, std::moneypunct<char> >::value), "");
-    static_assert((std::is_base_of<std::money_base, std::moneypunct<wchar_t> >::value), "");
     static_assert((std::is_same<std::moneypunct<char>::char_type, char>::value), "");
-    static_assert((std::is_same<std::moneypunct<wchar_t>::char_type, wchar_t>::value), "");
     static_assert((std::is_same<std::moneypunct<char>::string_type, std::string>::value), "");
-    static_assert((std::is_same<std::moneypunct<wchar_t>::string_type, std::wstring>::value), "");
-
     test(std::moneypunct<char, false>::intl);
     test(std::moneypunct<char, true>::intl);
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    static_assert((std::is_base_of<std::locale::facet, std::moneypunct<wchar_t> >::value), "");
+    static_assert((std::is_base_of<std::money_base, std::moneypunct<wchar_t> >::value), "");
+    static_assert((std::is_same<std::moneypunct<wchar_t>::char_type, wchar_t>::value), "");
+    static_assert((std::is_same<std::moneypunct<wchar_t>::string_type, std::wstring>::value), "");
     test(std::moneypunct<wchar_t, false>::intl);
     test(std::moneypunct<wchar_t, true>::intl);
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.numeric/locale.nm.put/types.pass.cpp b/test/std/localization/locale.categories/category.numeric/locale.nm.put/types.pass.cpp
index a2617dd..aef9494 100644
--- a/test/std/localization/locale.categories/category.numeric/locale.nm.put/types.pass.cpp
+++ b/test/std/localization/locale.categories/category.numeric/locale.nm.put/types.pass.cpp
@@ -25,11 +25,14 @@
 int main(int, char**)
 {
     static_assert((std::is_base_of<std::locale::facet, std::num_put<char> >::value), "");
-    static_assert((std::is_base_of<std::locale::facet, std::num_put<wchar_t> >::value), "");
     static_assert((std::is_same<std::num_put<char>::char_type, char>::value), "");
-    static_assert((std::is_same<std::num_put<wchar_t>::char_type, wchar_t>::value), "");
     static_assert((std::is_same<std::num_put<char>::iter_type, std::ostreambuf_iterator<char> >::value), "");
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    static_assert((std::is_base_of<std::locale::facet, std::num_put<wchar_t> >::value), "");
+    static_assert((std::is_same<std::num_put<wchar_t>::char_type, wchar_t>::value), "");
     static_assert((std::is_same<std::num_put<wchar_t>::iter_type, std::ostreambuf_iterator<wchar_t> >::value), "");
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/category.time/locale.time.get.byname/date_order_wide.pass.cpp b/test/std/localization/locale.categories/category.time/locale.time.get.byname/date_order_wide.pass.cpp
index 22248ea..1560125 100644
--- a/test/std/localization/locale.categories/category.time/locale.time.get.byname/date_order_wide.pass.cpp
+++ b/test/std/localization/locale.categories/category.time/locale.time.get.byname/date_order_wide.pass.cpp
@@ -6,6 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
+// XFAIL: libcpp-has-no-wide-characters
+
 // REQUIRES: locale.en_US.UTF-8
 // REQUIRES: locale.fr_FR.UTF-8
 // REQUIRES: locale.ru_RU.UTF-8
diff --git a/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_date_wide.pass.cpp b/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_date_wide.pass.cpp
index 0cb95a6..69dd389 100644
--- a/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_date_wide.pass.cpp
+++ b/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_date_wide.pass.cpp
@@ -9,6 +9,8 @@
 // NetBSD does not support LC_TIME at the moment
 // XFAIL: netbsd
 
+// XFAIL: libcpp-has-no-wide-characters
+
 // REQUIRES: locale.en_US.UTF-8
 // REQUIRES: locale.fr_FR.UTF-8
 // REQUIRES: locale.ru_RU.UTF-8
diff --git a/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_monthname_wide.pass.cpp b/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_monthname_wide.pass.cpp
index 4771468..bd8b7b9 100644
--- a/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_monthname_wide.pass.cpp
+++ b/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_monthname_wide.pass.cpp
@@ -9,6 +9,7 @@
 // REQUIRES: locale.en_US.UTF-8
 // REQUIRES: locale.fr_FR.UTF-8
 // REQUIRES: locale.zh_CN.UTF-8
+// XFAIL: libcpp-has-no-wide-characters
 
 // <locale>
 
diff --git a/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_one_wide.pass.cpp b/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_one_wide.pass.cpp
index d3315d6..c762f97 100644
--- a/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_one_wide.pass.cpp
+++ b/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_one_wide.pass.cpp
@@ -11,6 +11,8 @@
 
 // XFAIL: LIBCXX-WINDOWS-FIXME
 
+// XFAIL: libcpp-has-no-wide-characters
+
 // REQUIRES: locale.en_US.UTF-8
 // REQUIRES: locale.fr_FR.UTF-8
 // REQUIRES: locale.ru_RU.UTF-8
diff --git a/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_time_wide.pass.cpp b/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_time_wide.pass.cpp
index 849b358..dc83f30 100644
--- a/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_time_wide.pass.cpp
+++ b/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_time_wide.pass.cpp
@@ -6,6 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
+// XFAIL: libcpp-has-no-wide-characters
+
 // REQUIRES: locale.en_US.UTF-8
 // REQUIRES: locale.fr_FR.UTF-8
 // REQUIRES: locale.ru_RU.UTF-8
diff --git a/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_weekday_wide.pass.cpp b/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_weekday_wide.pass.cpp
index 9ff73e9..d96e4c2 100644
--- a/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_weekday_wide.pass.cpp
+++ b/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_weekday_wide.pass.cpp
@@ -6,6 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
+// XFAIL: libcpp-has-no-wide-characters
+
 // REQUIRES: locale.en_US.UTF-8
 // REQUIRES: locale.fr_FR.UTF-8
 // REQUIRES: locale.ru_RU.UTF-8
diff --git a/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_year_wide.pass.cpp b/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_year_wide.pass.cpp
index 85c4a3f..465e0ad 100644
--- a/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_year_wide.pass.cpp
+++ b/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_year_wide.pass.cpp
@@ -6,6 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
+// XFAIL: libcpp-has-no-wide-characters
+
 // REQUIRES: locale.en_US.UTF-8
 // REQUIRES: locale.fr_FR.UTF-8
 // REQUIRES: locale.ru_RU.UTF-8
diff --git a/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_date_wide.pass.cpp b/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_date_wide.pass.cpp
index ea0432b..9109740 100644
--- a/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_date_wide.pass.cpp
+++ b/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_date_wide.pass.cpp
@@ -14,6 +14,8 @@
 // get_date(iter_type s, iter_type end, ios_base& str,
 //          ios_base::iostate& err, tm* t) const;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <cassert>
 #include <ios>
diff --git a/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_monthname_wide.pass.cpp b/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_monthname_wide.pass.cpp
index 08c851b..261bb68 100644
--- a/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_monthname_wide.pass.cpp
+++ b/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_monthname_wide.pass.cpp
@@ -14,6 +14,8 @@
 // get_monthname(iter_type s, iter_type end, ios_base& str,
 //               ios_base::iostate& err, tm* t) const;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <cassert>
 #include "test_macros.h"
diff --git a/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_time_wide.pass.cpp b/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_time_wide.pass.cpp
index 9107ef8..5ff5404 100644
--- a/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_time_wide.pass.cpp
+++ b/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_time_wide.pass.cpp
@@ -14,6 +14,8 @@
 // get_time(iter_type s, iter_type end, ios_base& str,
 //          ios_base::iostate& err, tm* t) const;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <cassert>
 #include "test_macros.h"
diff --git a/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_weekday_wide.pass.cpp b/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_weekday_wide.pass.cpp
index 0092984..0a1399e 100644
--- a/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_weekday_wide.pass.cpp
+++ b/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_weekday_wide.pass.cpp
@@ -14,6 +14,8 @@
 // get_weekday(iter_type s, iter_type end, ios_base& str,
 //             ios_base::iostate& err, tm* t) const;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <cassert>
 #include "test_macros.h"
diff --git a/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/decimal_point.pass.cpp b/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/decimal_point.pass.cpp
index b93d1c4..9d074a7 100644
--- a/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/decimal_point.pass.cpp
+++ b/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/decimal_point.pass.cpp
@@ -30,11 +30,13 @@
             const std::numpunct<C>& np = std::use_facet<std::numpunct<C> >(l);
             assert(np.decimal_point() == '.');
         }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         {
             typedef wchar_t C;
             const std::numpunct<C>& np = std::use_facet<std::numpunct<C> >(l);
             assert(np.decimal_point() == L'.');
         }
+#endif
     }
     {
         std::locale l(LOCALE_en_US_UTF_8);
@@ -43,11 +45,13 @@
             const std::numpunct<C>& np = std::use_facet<std::numpunct<C> >(l);
             assert(np.decimal_point() == '.');
         }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         {
             typedef wchar_t C;
             const std::numpunct<C>& np = std::use_facet<std::numpunct<C> >(l);
             assert(np.decimal_point() == L'.');
         }
+#endif
     }
     {
         std::locale l(LOCALE_fr_FR_UTF_8);
@@ -56,11 +60,13 @@
             const std::numpunct<C>& np = std::use_facet<std::numpunct<C> >(l);
             assert(np.decimal_point() == ',');
         }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         {
             typedef wchar_t C;
             const std::numpunct<C>& np = std::use_facet<std::numpunct<C> >(l);
             assert(np.decimal_point() == L',');
         }
+#endif
     }
 
   return 0;
diff --git a/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/grouping.pass.cpp b/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/grouping.pass.cpp
index 3bd1c85..b9c4145 100644
--- a/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/grouping.pass.cpp
+++ b/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/grouping.pass.cpp
@@ -35,11 +35,13 @@
             const std::numpunct<C>& np = std::use_facet<std::numpunct<C> >(l);
             assert(np.grouping() == "");
         }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         {
             typedef wchar_t C;
             const std::numpunct<C>& np = std::use_facet<std::numpunct<C> >(l);
             assert(np.grouping() == "");
         }
+#endif
     }
     {
         std::locale l(LOCALE_en_US_UTF_8);
@@ -48,11 +50,13 @@
             const std::numpunct<C>& np = std::use_facet<std::numpunct<C> >(l);
             assert(np.grouping() == "\3\3");
         }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         {
             typedef wchar_t C;
             const std::numpunct<C>& np = std::use_facet<std::numpunct<C> >(l);
             assert(np.grouping() == "\3\3");
         }
+#endif
     }
     {
         std::locale l(LOCALE_fr_FR_UTF_8);
@@ -66,11 +70,13 @@
             const std::numpunct<C>& np = std::use_facet<std::numpunct<C> >(l);
             assert(np.grouping() ==  group);
         }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         {
             typedef wchar_t C;
             const std::numpunct<C>& np = std::use_facet<std::numpunct<C> >(l);
             assert(np.grouping() == group);
         }
+#endif
     }
 
   return 0;
diff --git a/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/thousands_sep.pass.cpp b/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/thousands_sep.pass.cpp
index 627bc6a..009fbc7 100644
--- a/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/thousands_sep.pass.cpp
+++ b/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/thousands_sep.pass.cpp
@@ -36,11 +36,13 @@
             const std::numpunct<C>& np = std::use_facet<std::numpunct<C> >(l);
             assert(np.thousands_sep() == ',');
         }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         {
             typedef wchar_t C;
             const std::numpunct<C>& np = std::use_facet<std::numpunct<C> >(l);
             assert(np.thousands_sep() == L',');
         }
+#endif
     }
     {
         std::locale l(LOCALE_en_US_UTF_8);
@@ -49,32 +51,39 @@
             const std::numpunct<C>& np = std::use_facet<std::numpunct<C> >(l);
             assert(np.thousands_sep() == ',');
         }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         {
             typedef wchar_t C;
             const std::numpunct<C>& np = std::use_facet<std::numpunct<C> >(l);
             assert(np.thousands_sep() == L',');
         }
+#endif
     }
     {
+        // The below tests work around GLIBC's use of U202F as LC_NUMERIC thousands_sep.
         std::locale l(LOCALE_fr_FR_UTF_8);
-// The below tests work around GLIBC's use of U202F as LC_NUMERIC thousands_sep.
-#if defined(_CS_GNU_LIBC_VERSION)
-        const char sep = ' ';
-        const wchar_t wsep = glibc_version_less_than("2.27") ? L' ' : L'\u202f';
-#else
-        const char sep = ',';
-        const wchar_t wsep = L',';
-#endif
         {
+#if defined(_CS_GNU_LIBC_VERSION)
+            const char sep = ' ';
+#else
+            const char sep = ',';
+#endif
             typedef char C;
             const std::numpunct<C>& np = std::use_facet<std::numpunct<C> >(l);
             assert(np.thousands_sep() == sep);
         }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         {
+#if defined(_CS_GNU_LIBC_VERSION)
+            const wchar_t wsep = glibc_version_less_than("2.27") ? L' ' : L'\u202f';
+#else
+            const wchar_t wsep = L',';
+#endif
             typedef wchar_t C;
             const std::numpunct<C>& np = std::use_facet<std::numpunct<C> >(l);
             assert(np.thousands_sep() == wsep);
         }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
     }
 
     return 0;
diff --git a/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/ctor.pass.cpp b/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/ctor.pass.cpp
index a48ba0e..28e0d4e 100644
--- a/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/ctor.pass.cpp
+++ b/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/ctor.pass.cpp
@@ -49,6 +49,8 @@
         assert(my_facet<char>::count == 1);
     }
     assert(my_facet<char>::count == 0);
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::locale l(std::locale::classic(), new my_facet<wchar_t>);
         assert(my_facet<wchar_t>::count == 1);
@@ -64,6 +66,7 @@
         assert(my_facet<wchar_t>::count == 1);
     }
     assert(my_facet<wchar_t>::count == 0);
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/facet.numpunct.members/decimal_point.pass.cpp b/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/facet.numpunct.members/decimal_point.pass.cpp
index 0c25943..78212c3 100644
--- a/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/facet.numpunct.members/decimal_point.pass.cpp
+++ b/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/facet.numpunct.members/decimal_point.pass.cpp
@@ -25,11 +25,13 @@
         const std::numpunct<C>& np = std::use_facet<std::numpunct<C> >(l);
         assert(np.decimal_point() == '.');
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef wchar_t C;
         const std::numpunct<C>& np = std::use_facet<std::numpunct<C> >(l);
         assert(np.decimal_point() == L'.');
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/facet.numpunct.members/falsename.pass.cpp b/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/facet.numpunct.members/falsename.pass.cpp
index c238604..e3ee165 100644
--- a/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/facet.numpunct.members/falsename.pass.cpp
+++ b/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/facet.numpunct.members/falsename.pass.cpp
@@ -25,11 +25,13 @@
         const std::numpunct<C>& np = std::use_facet<std::numpunct<C> >(l);
         assert(np.falsename() == std::string("false"));
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef wchar_t C;
         const std::numpunct<C>& np = std::use_facet<std::numpunct<C> >(l);
         assert(np.falsename() == std::wstring(L"false"));
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/facet.numpunct.members/grouping.pass.cpp b/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/facet.numpunct.members/grouping.pass.cpp
index ee84fcb..6c7f766 100644
--- a/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/facet.numpunct.members/grouping.pass.cpp
+++ b/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/facet.numpunct.members/grouping.pass.cpp
@@ -25,11 +25,13 @@
         const std::numpunct<C>& np = std::use_facet<std::numpunct<C> >(l);
         assert(np.grouping() == std::string());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef wchar_t C;
         const std::numpunct<C>& np = std::use_facet<std::numpunct<C> >(l);
         assert(np.grouping() == std::string());
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/facet.numpunct.members/thousands_sep.pass.cpp b/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/facet.numpunct.members/thousands_sep.pass.cpp
index 92a32ed..fb5331a 100644
--- a/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/facet.numpunct.members/thousands_sep.pass.cpp
+++ b/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/facet.numpunct.members/thousands_sep.pass.cpp
@@ -25,11 +25,13 @@
         const std::numpunct<C>& np = std::use_facet<std::numpunct<C> >(l);
         assert(np.thousands_sep() == ',');
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef wchar_t C;
         const std::numpunct<C>& np = std::use_facet<std::numpunct<C> >(l);
         assert(np.thousands_sep() == L',');
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/facet.numpunct.members/truename.pass.cpp b/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/facet.numpunct.members/truename.pass.cpp
index e89c95c..0f08a67 100644
--- a/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/facet.numpunct.members/truename.pass.cpp
+++ b/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/facet.numpunct.members/truename.pass.cpp
@@ -25,11 +25,13 @@
         const std::numpunct<C>& np = std::use_facet<std::numpunct<C> >(l);
         assert(np.truename() == std::string("true"));
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef wchar_t C;
         const std::numpunct<C>& np = std::use_facet<std::numpunct<C> >(l);
         assert(np.truename() == std::wstring(L"true"));
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/types.pass.cpp b/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/types.pass.cpp
index eb59310..3837172 100644
--- a/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/types.pass.cpp
+++ b/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/types.pass.cpp
@@ -37,6 +37,7 @@
         static_assert((std::is_same<std::numpunct<char>::string_type, std::string>::value), "");
         static_assert((std::is_base_of<std::locale::facet, std::numpunct<char> >::value), "");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         assert(std::has_facet<std::numpunct<wchar_t> >(l));
         const std::numpunct<wchar_t>& f = std::use_facet<std::numpunct<wchar_t> >(l);
@@ -48,6 +49,7 @@
         static_assert((std::is_same<std::numpunct<wchar_t>::string_type, std::wstring>::value), "");
         static_assert((std::is_base_of<std::locale::facet, std::numpunct<wchar_t> >::value), "");
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/localization/locale.stdcvt/codecvt_utf16.pass.cpp b/test/std/localization/locale.stdcvt/codecvt_utf16.pass.cpp
index 40f8ae2..47b9ea4 100644
--- a/test/std/localization/locale.stdcvt/codecvt_utf16.pass.cpp
+++ b/test/std/localization/locale.stdcvt/codecvt_utf16.pass.cpp
@@ -16,6 +16,8 @@
 //     // unspecified
 // };
 
+// XFAIL: libcpp-has-no-wide-characters
+
 // Not a portable test
 
 #include <codecvt>
diff --git a/test/std/localization/locale.stdcvt/codecvt_utf16_always_noconv.pass.cpp b/test/std/localization/locale.stdcvt/codecvt_utf16_always_noconv.pass.cpp
index 7788fad..e9a1e7a 100644
--- a/test/std/localization/locale.stdcvt/codecvt_utf16_always_noconv.pass.cpp
+++ b/test/std/localization/locale.stdcvt/codecvt_utf16_always_noconv.pass.cpp
@@ -25,12 +25,14 @@
 
 int main(int, char**)
 {
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef std::codecvt_utf16<wchar_t> C;
         C c;
         bool r = c.always_noconv();
         assert(r == false);
     }
+#endif
     {
         typedef std::codecvt_utf16<char16_t> C;
         C c;
diff --git a/test/std/localization/locale.stdcvt/codecvt_utf16_encoding.pass.cpp b/test/std/localization/locale.stdcvt/codecvt_utf16_encoding.pass.cpp
index c968cf6..2407644 100644
--- a/test/std/localization/locale.stdcvt/codecvt_utf16_encoding.pass.cpp
+++ b/test/std/localization/locale.stdcvt/codecvt_utf16_encoding.pass.cpp
@@ -25,12 +25,14 @@
 
 int main(int, char**)
 {
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef std::codecvt_utf16<wchar_t> C;
         C c;
         int r = c.encoding();
         assert(r == 0);
     }
+#endif
     {
         typedef std::codecvt_utf16<char16_t> C;
         C c;
diff --git a/test/std/localization/locale.stdcvt/codecvt_utf16_max_length.pass.cpp b/test/std/localization/locale.stdcvt/codecvt_utf16_max_length.pass.cpp
index c392fda..6f31d74 100644
--- a/test/std/localization/locale.stdcvt/codecvt_utf16_max_length.pass.cpp
+++ b/test/std/localization/locale.stdcvt/codecvt_utf16_max_length.pass.cpp
@@ -69,7 +69,9 @@
 }
 
 int main(int, char**) {
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   TestHelper<wchar_t>::test();
+#endif
   TestHelper<char16_t>::test();
   TestHelper<char32_t>::test();
   return 0;
diff --git a/test/std/localization/locale.stdcvt/codecvt_utf16_out.pass.cpp b/test/std/localization/locale.stdcvt/codecvt_utf16_out.pass.cpp
index f99f8f4..da94fb6 100644
--- a/test/std/localization/locale.stdcvt/codecvt_utf16_out.pass.cpp
+++ b/test/std/localization/locale.stdcvt/codecvt_utf16_out.pass.cpp
@@ -350,7 +350,9 @@
 
 int main(int, char**) {
   TestHelper<char32_t>::test();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   TestHelper<wchar_t>::test();
+#endif
 
   return 0;
 }
diff --git a/test/std/localization/locale.stdcvt/codecvt_utf16_unshift.pass.cpp b/test/std/localization/locale.stdcvt/codecvt_utf16_unshift.pass.cpp
index 261363f..0a7adaf 100644
--- a/test/std/localization/locale.stdcvt/codecvt_utf16_unshift.pass.cpp
+++ b/test/std/localization/locale.stdcvt/codecvt_utf16_unshift.pass.cpp
@@ -27,6 +27,7 @@
 
 int main(int, char**)
 {
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef std::codecvt_utf16<wchar_t> C;
         C c;
@@ -36,6 +37,7 @@
         std::codecvt_base::result r = c.unshift(m, n, n+4, np);
         assert(r == std::codecvt_base::noconv);
     }
+#endif
     {
         typedef std::codecvt_utf16<char16_t> C;
         C c;
diff --git a/test/std/localization/locale.stdcvt/codecvt_utf8.pass.cpp b/test/std/localization/locale.stdcvt/codecvt_utf8.pass.cpp
index 08f98fa..e281f1a 100644
--- a/test/std/localization/locale.stdcvt/codecvt_utf8.pass.cpp
+++ b/test/std/localization/locale.stdcvt/codecvt_utf8.pass.cpp
@@ -16,6 +16,8 @@
 //     // unspecified
 // };
 
+// XFAIL: libcpp-has-no-wide-characters
+
 // Not a portable test
 
 #include <codecvt>
diff --git a/test/std/localization/locale.stdcvt/codecvt_utf8_always_noconv.pass.cpp b/test/std/localization/locale.stdcvt/codecvt_utf8_always_noconv.pass.cpp
index 2235e7b..23f29df 100644
--- a/test/std/localization/locale.stdcvt/codecvt_utf8_always_noconv.pass.cpp
+++ b/test/std/localization/locale.stdcvt/codecvt_utf8_always_noconv.pass.cpp
@@ -25,12 +25,14 @@
 
 int main(int, char**)
 {
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef std::codecvt_utf8<wchar_t> C;
         C c;
         bool r = c.always_noconv();
         assert(r == false);
     }
+#endif
     {
         typedef std::codecvt_utf8<char16_t> C;
         C c;
diff --git a/test/std/localization/locale.stdcvt/codecvt_utf8_encoding.pass.cpp b/test/std/localization/locale.stdcvt/codecvt_utf8_encoding.pass.cpp
index 70862e4..eddf665 100644
--- a/test/std/localization/locale.stdcvt/codecvt_utf8_encoding.pass.cpp
+++ b/test/std/localization/locale.stdcvt/codecvt_utf8_encoding.pass.cpp
@@ -25,12 +25,14 @@
 
 int main(int, char**)
 {
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef std::codecvt_utf8<wchar_t> C;
         C c;
         int r = c.encoding();
         assert(r == 0);
     }
+#endif
     {
         typedef std::codecvt_utf8<char16_t> C;
         C c;
diff --git a/test/std/localization/locale.stdcvt/codecvt_utf8_length.pass.cpp b/test/std/localization/locale.stdcvt/codecvt_utf8_length.pass.cpp
index 5e2cf83..bd4aa1d 100644
--- a/test/std/localization/locale.stdcvt/codecvt_utf8_length.pass.cpp
+++ b/test/std/localization/locale.stdcvt/codecvt_utf8_length.pass.cpp
@@ -190,7 +190,9 @@
 }
 
 int main(int, char**) {
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   TestHelper<wchar_t>::test();
+#endif
   TestHelper<char32_t>::test();
   TestHelper<char16_t>::test();
   return 0;
diff --git a/test/std/localization/locale.stdcvt/codecvt_utf8_max_length.pass.cpp b/test/std/localization/locale.stdcvt/codecvt_utf8_max_length.pass.cpp
index 8da24a2..8afb5bc 100644
--- a/test/std/localization/locale.stdcvt/codecvt_utf8_max_length.pass.cpp
+++ b/test/std/localization/locale.stdcvt/codecvt_utf8_max_length.pass.cpp
@@ -69,7 +69,9 @@
 }
 
 int main(int, char**) {
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   TestHelper<wchar_t>::test();
+#endif
   TestHelper<char16_t>::test();
   TestHelper<char32_t>::test();
   return 0;
diff --git a/test/std/localization/locale.stdcvt/codecvt_utf8_out.pass.cpp b/test/std/localization/locale.stdcvt/codecvt_utf8_out.pass.cpp
index 96089fb..99dc219 100644
--- a/test/std/localization/locale.stdcvt/codecvt_utf8_out.pass.cpp
+++ b/test/std/localization/locale.stdcvt/codecvt_utf8_out.pass.cpp
@@ -321,7 +321,9 @@
 }
 
 int main(int, char**) {
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   TestHelper<wchar_t>::test();
+#endif
   TestHelper<char32_t>::test();
   TestHelper<char16_t>::test();
 
diff --git a/test/std/localization/locale.stdcvt/codecvt_utf8_unshift.pass.cpp b/test/std/localization/locale.stdcvt/codecvt_utf8_unshift.pass.cpp
index 6aa021a..239dbfc 100644
--- a/test/std/localization/locale.stdcvt/codecvt_utf8_unshift.pass.cpp
+++ b/test/std/localization/locale.stdcvt/codecvt_utf8_unshift.pass.cpp
@@ -27,6 +27,7 @@
 
 int main(int, char**)
 {
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef std::codecvt_utf8<wchar_t> C;
         C c;
@@ -36,6 +37,7 @@
         std::codecvt_base::result r = c.unshift(m, n, n+4, np);
         assert(r == std::codecvt_base::noconv);
     }
+#endif
     {
         typedef std::codecvt_utf8<char16_t> C;
         C c;
diff --git a/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_always_noconv.pass.cpp b/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_always_noconv.pass.cpp
index 6b65978..7aa5591 100644
--- a/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_always_noconv.pass.cpp
+++ b/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_always_noconv.pass.cpp
@@ -25,12 +25,14 @@
 
 int main(int, char**)
 {
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef std::codecvt_utf8_utf16<wchar_t> C;
         C c;
         bool r = c.always_noconv();
         assert(r == false);
     }
+#endif
     {
         typedef std::codecvt_utf8_utf16<char16_t> C;
         C c;
diff --git a/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_encoding.pass.cpp b/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_encoding.pass.cpp
index 3b4fa34..3e8aa3a 100644
--- a/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_encoding.pass.cpp
+++ b/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_encoding.pass.cpp
@@ -25,12 +25,14 @@
 
 int main(int, char**)
 {
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef std::codecvt_utf8_utf16<wchar_t> C;
         C c;
         int r = c.encoding();
         assert(r == 0);
     }
+#endif
     {
         typedef std::codecvt_utf8_utf16<char16_t> C;
         C c;
diff --git a/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_in.pass.cpp b/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_in.pass.cpp
index 2ec13bb..8b23533 100644
--- a/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_in.pass.cpp
+++ b/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_in.pass.cpp
@@ -237,7 +237,7 @@
 }
 
 int main(int, char**) {
-#ifndef _WIN32
+#if !defined(_WIN32) && !defined(TEST_HAS_NO_WIDE_CHARACTERS)
   TestHelper<wchar_t>::test();
 #endif
   TestHelper<char32_t>::test();
diff --git a/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_length.pass.cpp b/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_length.pass.cpp
index 2dc4ce5..3847fad 100644
--- a/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_length.pass.cpp
+++ b/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_length.pass.cpp
@@ -26,6 +26,7 @@
 
 int main(int, char**)
 {
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef std::codecvt_utf8_utf16<wchar_t> C;
         C c;
@@ -95,6 +96,7 @@
         r = c.length(m, n, n+1, 2);
         assert(r == 1);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef std::codecvt_utf8_utf16<char32_t> C;
         C c;
diff --git a/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_max_length.pass.cpp b/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_max_length.pass.cpp
index 6459b2e..f7f7ce3 100644
--- a/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_max_length.pass.cpp
+++ b/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_max_length.pass.cpp
@@ -25,6 +25,7 @@
 
 int main(int, char**)
 {
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef std::codecvt_utf8_utf16<wchar_t> C;
         C c;
@@ -37,6 +38,7 @@
         int r = c.max_length();
         assert(r == 7);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef std::codecvt_utf8_utf16<char16_t> C;
         C c;
diff --git a/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_out.pass.cpp b/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_out.pass.cpp
index 4b3f02d..895db46 100644
--- a/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_out.pass.cpp
+++ b/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_out.pass.cpp
@@ -302,7 +302,7 @@
 }
 
 int main(int, char**) {
-#ifndef _WIN32
+#if !defined(_WIN32) && !defined(TEST_HAS_NO_WIDE_CHARACTERS)
   TestHelper<wchar_t>::test();
 #endif
   TestHelper<char32_t>::test();
diff --git a/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_unshift.pass.cpp b/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_unshift.pass.cpp
index ccecf79..c362397 100644
--- a/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_unshift.pass.cpp
+++ b/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_unshift.pass.cpp
@@ -27,6 +27,7 @@
 
 int main(int, char**)
 {
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef std::codecvt_utf8_utf16<wchar_t> C;
         C c;
@@ -36,6 +37,7 @@
         std::codecvt_base::result r = c.unshift(m, n, n+4, np);
         assert(r == std::codecvt_base::noconv);
     }
+#endif
     {
         typedef std::codecvt_utf8_utf16<char16_t> C;
         C c;
diff --git a/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/ctor.pass.cpp b/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/ctor.pass.cpp
index d70804e..bc179f4 100644
--- a/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/ctor.pass.cpp
+++ b/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/ctor.pass.cpp
@@ -18,6 +18,8 @@
 // explicit wbuffer_convert(streambuf* bytebuf, Codecvt* pcvt = new Codecvt,
 //                          state_type state = state_type()); // C++20
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <codecvt>
 #include <sstream>
diff --git a/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/overflow.pass.cpp b/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/overflow.pass.cpp
index b29fce5..27ced20 100644
--- a/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/overflow.pass.cpp
+++ b/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/overflow.pass.cpp
@@ -14,6 +14,8 @@
 
 // This test is not entirely portable
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <codecvt>
 #include <fstream>
diff --git a/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/pbackfail.pass.cpp b/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/pbackfail.pass.cpp
index 264a67e..b07b5ee 100644
--- a/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/pbackfail.pass.cpp
+++ b/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/pbackfail.pass.cpp
@@ -16,6 +16,8 @@
 
 // This test is not entirely portable
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <codecvt>
 #include <fstream>
diff --git a/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/rdbuf.pass.cpp b/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/rdbuf.pass.cpp
index 1d6e343..72c7c8c 100644
--- a/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/rdbuf.pass.cpp
+++ b/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/rdbuf.pass.cpp
@@ -12,6 +12,8 @@
 
 // streambuf *rdbuf(streambuf *bytebuf);
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <codecvt>
 #include <sstream>
diff --git a/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/seekoff.pass.cpp b/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/seekoff.pass.cpp
index 33fc9f2..8a3ca75 100644
--- a/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/seekoff.pass.cpp
+++ b/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/seekoff.pass.cpp
@@ -17,6 +17,8 @@
 
 // This test is not entirely portable
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <codecvt>
 #include <fstream>
diff --git a/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/state.pass.cpp b/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/state.pass.cpp
index 84a0fdc..8736da7 100644
--- a/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/state.pass.cpp
+++ b/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/state.pass.cpp
@@ -12,6 +12,8 @@
 
 // state_type state() const;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <codecvt>
 #include <sstream>
diff --git a/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/test.pass.cpp b/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/test.pass.cpp
index 2d5564a..0f4a49b 100644
--- a/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/test.pass.cpp
+++ b/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/test.pass.cpp
@@ -10,6 +10,8 @@
 
 // wbuffer_convert<Codecvt, Elem, Tr>
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <fstream>
 #include <locale>
 #include <codecvt>
diff --git a/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/underflow.pass.cpp b/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/underflow.pass.cpp
index 6642488..a198a95 100644
--- a/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/underflow.pass.cpp
+++ b/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/underflow.pass.cpp
@@ -16,6 +16,8 @@
 
 // This test is not entirely portable
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <codecvt>
 #include <fstream>
diff --git a/test/std/localization/locales/locale.convenience/conversions/conversions.string/converted.pass.cpp b/test/std/localization/locales/locale.convenience/conversions/conversions.string/converted.pass.cpp
index 955bbb0..5ce5561 100644
--- a/test/std/localization/locales/locale.convenience/conversions/conversions.string/converted.pass.cpp
+++ b/test/std/localization/locales/locale.convenience/conversions/conversions.string/converted.pass.cpp
@@ -12,6 +12,8 @@
 
 // size_t converted() const;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <codecvt>
 #include <cassert>
diff --git a/test/std/localization/locales/locale.convenience/conversions/conversions.string/ctor_codecvt.pass.cpp b/test/std/localization/locales/locale.convenience/conversions/conversions.string/ctor_codecvt.pass.cpp
index bc39fd7..d4b1912 100644
--- a/test/std/localization/locales/locale.convenience/conversions/conversions.string/ctor_codecvt.pass.cpp
+++ b/test/std/localization/locales/locale.convenience/conversions/conversions.string/ctor_codecvt.pass.cpp
@@ -15,6 +15,8 @@
 // wstring_convert() : wstring_convert(new Codecvt) {}    // C++20
 // explicit wstring_convert(Codecvt* pcvt);               // C++20
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <codecvt>
 #include <cassert>
diff --git a/test/std/localization/locales/locale.convenience/conversions/conversions.string/ctor_codecvt_state.pass.cpp b/test/std/localization/locales/locale.convenience/conversions/conversions.string/ctor_codecvt_state.pass.cpp
index 292777a..c5a3dd8 100644
--- a/test/std/localization/locales/locale.convenience/conversions/conversions.string/ctor_codecvt_state.pass.cpp
+++ b/test/std/localization/locales/locale.convenience/conversions/conversions.string/ctor_codecvt_state.pass.cpp
@@ -12,6 +12,8 @@
 
 // wstring_convert(Codecvt* pcvt, state_type state);
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <codecvt>
 #include <cassert>
diff --git a/test/std/localization/locales/locale.convenience/conversions/conversions.string/ctor_copy.pass.cpp b/test/std/localization/locales/locale.convenience/conversions/conversions.string/ctor_copy.pass.cpp
index fb7ce01..df386df 100644
--- a/test/std/localization/locales/locale.convenience/conversions/conversions.string/ctor_copy.pass.cpp
+++ b/test/std/localization/locales/locale.convenience/conversions/conversions.string/ctor_copy.pass.cpp
@@ -17,6 +17,8 @@
 // wstring_convert(wstring_convert const&) = delete;
 // wstring_convert& operator=(wstring_convert const&) = delete;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <codecvt>
 #include <cassert>
diff --git a/test/std/localization/locales/locale.convenience/conversions/conversions.string/ctor_err_string.pass.cpp b/test/std/localization/locales/locale.convenience/conversions/conversions.string/ctor_err_string.pass.cpp
index e284c13..5ad3dbe 100644
--- a/test/std/localization/locales/locale.convenience/conversions/conversions.string/ctor_err_string.pass.cpp
+++ b/test/std/localization/locales/locale.convenience/conversions/conversions.string/ctor_err_string.pass.cpp
@@ -13,6 +13,8 @@
 // wstring_convert(const byte_string& byte_err,
 //                 const wide_string& wide_err = wide_string());
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <codecvt>
 #include <cassert>
diff --git a/test/std/localization/locales/locale.convenience/conversions/conversions.string/from_bytes.pass.cpp b/test/std/localization/locales/locale.convenience/conversions/conversions.string/from_bytes.pass.cpp
index deb4b96..bd0191d 100644
--- a/test/std/localization/locales/locale.convenience/conversions/conversions.string/from_bytes.pass.cpp
+++ b/test/std/localization/locales/locale.convenience/conversions/conversions.string/from_bytes.pass.cpp
@@ -15,6 +15,8 @@
 // wide_string from_bytes(const byte_string& str);
 // wide_string from_bytes(const char* first, const char* last);
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <codecvt>
 #include <cassert>
diff --git a/test/std/localization/locales/locale.convenience/conversions/conversions.string/state.pass.cpp b/test/std/localization/locales/locale.convenience/conversions/conversions.string/state.pass.cpp
index f6dcd06..1602b1a 100644
--- a/test/std/localization/locales/locale.convenience/conversions/conversions.string/state.pass.cpp
+++ b/test/std/localization/locales/locale.convenience/conversions/conversions.string/state.pass.cpp
@@ -12,6 +12,8 @@
 
 // state_type state() const;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <codecvt>
 
diff --git a/test/std/localization/locales/locale.convenience/conversions/conversions.string/to_bytes.pass.cpp b/test/std/localization/locales/locale.convenience/conversions/conversions.string/to_bytes.pass.cpp
index 849b990..5ccaca0 100644
--- a/test/std/localization/locales/locale.convenience/conversions/conversions.string/to_bytes.pass.cpp
+++ b/test/std/localization/locales/locale.convenience/conversions/conversions.string/to_bytes.pass.cpp
@@ -15,6 +15,8 @@
 // byte_string to_bytes(const wide_string& wstr);
 // byte_string to_bytes(const Elem* first, const Elem* last);
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <codecvt>
 #include <cassert>
diff --git a/test/std/localization/locales/locale.convenience/conversions/conversions.string/types.pass.cpp b/test/std/localization/locales/locale.convenience/conversions/conversions.string/types.pass.cpp
index a73739e..88c4bcc 100644
--- a/test/std/localization/locales/locale.convenience/conversions/conversions.string/types.pass.cpp
+++ b/test/std/localization/locales/locale.convenience/conversions/conversions.string/types.pass.cpp
@@ -19,6 +19,8 @@
 //     typedef typename Codecvt::state_type                      state_type;
 //     typedef typename wide_string::traits_type::int_type       int_type;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <locale>
 #include <codecvt>
 
diff --git a/test/std/localization/locales/locale/locale.cons/assign.pass.cpp b/test/std/localization/locales/locale/locale.cons/assign.pass.cpp
index 94e2d26..e897cc5 100644
--- a/test/std/localization/locales/locale/locale.cons/assign.pass.cpp
+++ b/test/std/localization/locales/locale/locale.cons/assign.pass.cpp
@@ -30,43 +30,42 @@
 #include "platform_support.h" // locale name macros
 
 
+template<class CharT>
+void check_for(const std::locale& loc)
+{
+    assert(std::has_facet<std::collate<CharT> >(loc));
+
+    assert(std::has_facet<std::ctype<CharT> >(loc));
+
+    assert((std::has_facet<std::codecvt<CharT, char, std::mbstate_t> >(loc)));
+
+    assert(std::has_facet<std::moneypunct<CharT> >(loc));
+    assert(std::has_facet<std::money_get<CharT> >(loc));
+    assert(std::has_facet<std::money_put<CharT> >(loc));
+
+    assert(std::has_facet<std::numpunct<CharT> >(loc));
+    assert(std::has_facet<std::num_get<CharT> >(loc));
+    assert(std::has_facet<std::num_put<CharT> >(loc));
+
+    assert(std::has_facet<std::time_get<CharT> >(loc));
+    assert(std::has_facet<std::time_put<CharT> >(loc));
+
+    assert(std::has_facet<std::messages<CharT> >(loc));
+}
+
 void check(const std::locale& loc)
 {
-    assert(std::has_facet<std::collate<char> >(loc));
-    assert(std::has_facet<std::collate<wchar_t> >(loc));
+    check_for<char>(loc);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    check_for<wchar_t>(loc);
+#endif
 
-    assert(std::has_facet<std::ctype<char> >(loc));
-    assert(std::has_facet<std::ctype<wchar_t> >(loc));
-    assert((std::has_facet<std::codecvt<char, char, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char16_t, char, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char32_t, char, std::mbstate_t> >(loc)));
 #if TEST_STD_VER > 17
     assert((std::has_facet<std::codecvt<char16_t, char8_t, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char32_t, char8_t, std::mbstate_t> >(loc)));
 #endif
-    assert((std::has_facet<std::codecvt<wchar_t, char, std::mbstate_t> >(loc)));
-
-    assert((std::has_facet<std::moneypunct<char> >(loc)));
-    assert((std::has_facet<std::moneypunct<wchar_t> >(loc)));
-    assert((std::has_facet<std::money_get<char> >(loc)));
-    assert((std::has_facet<std::money_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::money_put<char> >(loc)));
-    assert((std::has_facet<std::money_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::numpunct<char> >(loc)));
-    assert((std::has_facet<std::numpunct<wchar_t> >(loc)));
-    assert((std::has_facet<std::num_get<char> >(loc)));
-    assert((std::has_facet<std::num_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::num_put<char> >(loc)));
-    assert((std::has_facet<std::num_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::time_get<char> >(loc)));
-    assert((std::has_facet<std::time_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::time_put<char> >(loc)));
-    assert((std::has_facet<std::time_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::messages<char> >(loc)));
-    assert((std::has_facet<std::messages<wchar_t> >(loc)));
 }
 
 int main(int, char**)
diff --git a/test/std/localization/locales/locale/locale.cons/char_pointer.pass.cpp b/test/std/localization/locales/locale/locale.cons/char_pointer.pass.cpp
index 42b99d3..cda9fe3 100644
--- a/test/std/localization/locales/locale/locale.cons/char_pointer.pass.cpp
+++ b/test/std/localization/locales/locale/locale.cons/char_pointer.pass.cpp
@@ -33,44 +33,42 @@
 
 #include "test_macros.h"
 
+template<class CharT>
+void check_for(const std::locale& loc)
+{
+    assert(std::has_facet<std::collate<CharT> >(loc));
+
+    assert(std::has_facet<std::ctype<CharT> >(loc));
+
+    assert((std::has_facet<std::codecvt<CharT, char, std::mbstate_t> >(loc)));
+
+    assert(std::has_facet<std::moneypunct<CharT> >(loc));
+    assert(std::has_facet<std::money_get<CharT> >(loc));
+    assert(std::has_facet<std::money_put<CharT> >(loc));
+
+    assert(std::has_facet<std::numpunct<CharT> >(loc));
+    assert(std::has_facet<std::num_get<CharT> >(loc));
+    assert(std::has_facet<std::num_put<CharT> >(loc));
+
+    assert(std::has_facet<std::time_get<CharT> >(loc));
+    assert(std::has_facet<std::time_put<CharT> >(loc));
+
+    assert(std::has_facet<std::messages<CharT> >(loc));
+}
 
 void check(const std::locale& loc)
 {
-    assert(std::has_facet<std::collate<char> >(loc));
-    assert(std::has_facet<std::collate<wchar_t> >(loc));
+    check_for<char>(loc);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    check_for<wchar_t>(loc);
+#endif
 
-    assert(std::has_facet<std::ctype<char> >(loc));
-    assert(std::has_facet<std::ctype<wchar_t> >(loc));
-    assert((std::has_facet<std::codecvt<char, char, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char16_t, char, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char32_t, char, std::mbstate_t> >(loc)));
 #if TEST_STD_VER > 17
     assert((std::has_facet<std::codecvt<char16_t, char8_t, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char32_t, char8_t, std::mbstate_t> >(loc)));
 #endif
-    assert((std::has_facet<std::codecvt<wchar_t, char, std::mbstate_t> >(loc)));
-
-    assert((std::has_facet<std::moneypunct<char> >(loc)));
-    assert((std::has_facet<std::moneypunct<wchar_t> >(loc)));
-    assert((std::has_facet<std::money_get<char> >(loc)));
-    assert((std::has_facet<std::money_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::money_put<char> >(loc)));
-    assert((std::has_facet<std::money_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::numpunct<char> >(loc)));
-    assert((std::has_facet<std::numpunct<wchar_t> >(loc)));
-    assert((std::has_facet<std::num_get<char> >(loc)));
-    assert((std::has_facet<std::num_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::num_put<char> >(loc)));
-    assert((std::has_facet<std::num_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::time_get<char> >(loc)));
-    assert((std::has_facet<std::time_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::time_put<char> >(loc)));
-    assert((std::has_facet<std::time_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::messages<char> >(loc)));
-    assert((std::has_facet<std::messages<wchar_t> >(loc)));
 }
 
 int main(int, char**)
diff --git a/test/std/localization/locales/locale/locale.cons/copy.pass.cpp b/test/std/localization/locales/locale/locale.cons/copy.pass.cpp
index 012086a..58cc544 100644
--- a/test/std/localization/locales/locale/locale.cons/copy.pass.cpp
+++ b/test/std/localization/locales/locale/locale.cons/copy.pass.cpp
@@ -28,43 +28,42 @@
 #include "test_macros.h"
 #include "platform_support.h" // locale name macros
 
+template<class CharT>
+void check_for(const std::locale& loc)
+{
+    assert(std::has_facet<std::collate<CharT> >(loc));
+
+    assert(std::has_facet<std::ctype<CharT> >(loc));
+
+    assert((std::has_facet<std::codecvt<CharT, char, std::mbstate_t> >(loc)));
+
+    assert(std::has_facet<std::moneypunct<CharT> >(loc));
+    assert(std::has_facet<std::money_get<CharT> >(loc));
+    assert(std::has_facet<std::money_put<CharT> >(loc));
+
+    assert(std::has_facet<std::numpunct<CharT> >(loc));
+    assert(std::has_facet<std::num_get<CharT> >(loc));
+    assert(std::has_facet<std::num_put<CharT> >(loc));
+
+    assert(std::has_facet<std::time_get<CharT> >(loc));
+    assert(std::has_facet<std::time_put<CharT> >(loc));
+
+    assert(std::has_facet<std::messages<CharT> >(loc));
+}
+
 void check(const std::locale& loc)
 {
-    assert(std::has_facet<std::collate<char> >(loc));
-    assert(std::has_facet<std::collate<wchar_t> >(loc));
+    check_for<char>(loc);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    check_for<wchar_t>(loc);
+#endif
 
-    assert(std::has_facet<std::ctype<char> >(loc));
-    assert(std::has_facet<std::ctype<wchar_t> >(loc));
-    assert((std::has_facet<std::codecvt<char, char, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char16_t, char, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char32_t, char, std::mbstate_t> >(loc)));
 #if TEST_STD_VER > 17
     assert((std::has_facet<std::codecvt<char16_t, char8_t, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char32_t, char8_t, std::mbstate_t> >(loc)));
 #endif
-    assert((std::has_facet<std::codecvt<wchar_t, char, std::mbstate_t> >(loc)));
-
-    assert((std::has_facet<std::moneypunct<char> >(loc)));
-    assert((std::has_facet<std::moneypunct<wchar_t> >(loc)));
-    assert((std::has_facet<std::money_get<char> >(loc)));
-    assert((std::has_facet<std::money_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::money_put<char> >(loc)));
-    assert((std::has_facet<std::money_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::numpunct<char> >(loc)));
-    assert((std::has_facet<std::numpunct<wchar_t> >(loc)));
-    assert((std::has_facet<std::num_get<char> >(loc)));
-    assert((std::has_facet<std::num_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::num_put<char> >(loc)));
-    assert((std::has_facet<std::num_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::time_get<char> >(loc)));
-    assert((std::has_facet<std::time_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::time_put<char> >(loc)));
-    assert((std::has_facet<std::time_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::messages<char> >(loc)));
-    assert((std::has_facet<std::messages<wchar_t> >(loc)));
 }
 
 int main(int, char**)
diff --git a/test/std/localization/locales/locale/locale.cons/default.pass.cpp b/test/std/localization/locales/locale/locale.cons/default.pass.cpp
index c7a6759..1f5b0b5 100644
--- a/test/std/localization/locales/locale/locale.cons/default.pass.cpp
+++ b/test/std/localization/locales/locale/locale.cons/default.pass.cpp
@@ -27,43 +27,42 @@
 #include "platform_support.h" // locale name macros
 #include "count_new.h"
 
+template<class CharT>
+void check_for(const std::locale& loc)
+{
+    assert(std::has_facet<std::collate<CharT> >(loc));
+
+    assert(std::has_facet<std::ctype<CharT> >(loc));
+
+    assert((std::has_facet<std::codecvt<CharT, char, std::mbstate_t> >(loc)));
+
+    assert(std::has_facet<std::moneypunct<CharT> >(loc));
+    assert(std::has_facet<std::money_get<CharT> >(loc));
+    assert(std::has_facet<std::money_put<CharT> >(loc));
+
+    assert(std::has_facet<std::numpunct<CharT> >(loc));
+    assert(std::has_facet<std::num_get<CharT> >(loc));
+    assert(std::has_facet<std::num_put<CharT> >(loc));
+
+    assert(std::has_facet<std::time_get<CharT> >(loc));
+    assert(std::has_facet<std::time_put<CharT> >(loc));
+
+    assert(std::has_facet<std::messages<CharT> >(loc));
+}
+
 void check(const std::locale& loc)
 {
-    assert(std::has_facet<std::collate<char> >(loc));
-    assert(std::has_facet<std::collate<wchar_t> >(loc));
+    check_for<char>(loc);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    check_for<wchar_t>(loc);
+#endif
 
-    assert(std::has_facet<std::ctype<char> >(loc));
-    assert(std::has_facet<std::ctype<wchar_t> >(loc));
-    assert((std::has_facet<std::codecvt<char, char, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char16_t, char, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char32_t, char, std::mbstate_t> >(loc)));
 #if TEST_STD_VER > 17
     assert((std::has_facet<std::codecvt<char16_t, char8_t, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char32_t, char8_t, std::mbstate_t> >(loc)));
 #endif
-    assert((std::has_facet<std::codecvt<wchar_t, char, std::mbstate_t> >(loc)));
-
-    assert((std::has_facet<std::moneypunct<char> >(loc)));
-    assert((std::has_facet<std::moneypunct<wchar_t> >(loc)));
-    assert((std::has_facet<std::money_get<char> >(loc)));
-    assert((std::has_facet<std::money_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::money_put<char> >(loc)));
-    assert((std::has_facet<std::money_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::numpunct<char> >(loc)));
-    assert((std::has_facet<std::numpunct<wchar_t> >(loc)));
-    assert((std::has_facet<std::num_get<char> >(loc)));
-    assert((std::has_facet<std::num_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::num_put<char> >(loc)));
-    assert((std::has_facet<std::num_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::time_get<char> >(loc)));
-    assert((std::has_facet<std::time_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::time_put<char> >(loc)));
-    assert((std::has_facet<std::time_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::messages<char> >(loc)));
-    assert((std::has_facet<std::messages<wchar_t> >(loc)));
 }
 
 int main(int, char**)
diff --git a/test/std/localization/locales/locale/locale.cons/locale_char_pointer_cat.pass.cpp b/test/std/localization/locales/locale/locale.cons/locale_char_pointer_cat.pass.cpp
index 694af88..c5760b6 100644
--- a/test/std/localization/locales/locale/locale.cons/locale_char_pointer_cat.pass.cpp
+++ b/test/std/localization/locales/locale/locale.cons/locale_char_pointer_cat.pass.cpp
@@ -30,43 +30,42 @@
 #include "test_macros.h"
 #include "platform_support.h" // locale name macros
 
+template<class CharT>
+void check_for(const std::locale& loc)
+{
+    assert(std::has_facet<std::collate<CharT> >(loc));
+
+    assert(std::has_facet<std::ctype<CharT> >(loc));
+
+    assert((std::has_facet<std::codecvt<CharT, char, std::mbstate_t> >(loc)));
+
+    assert(std::has_facet<std::moneypunct<CharT> >(loc));
+    assert(std::has_facet<std::money_get<CharT> >(loc));
+    assert(std::has_facet<std::money_put<CharT> >(loc));
+
+    assert(std::has_facet<std::numpunct<CharT> >(loc));
+    assert(std::has_facet<std::num_get<CharT> >(loc));
+    assert(std::has_facet<std::num_put<CharT> >(loc));
+
+    assert(std::has_facet<std::time_get<CharT> >(loc));
+    assert(std::has_facet<std::time_put<CharT> >(loc));
+
+    assert(std::has_facet<std::messages<CharT> >(loc));
+}
+
 void check(const std::locale& loc)
 {
-    assert(std::has_facet<std::collate<char> >(loc));
-    assert(std::has_facet<std::collate<wchar_t> >(loc));
+    check_for<char>(loc);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    check_for<wchar_t>(loc);
+#endif
 
-    assert(std::has_facet<std::ctype<char> >(loc));
-    assert(std::has_facet<std::ctype<wchar_t> >(loc));
-    assert((std::has_facet<std::codecvt<char, char, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char16_t, char, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char32_t, char, std::mbstate_t> >(loc)));
 #if TEST_STD_VER > 17
     assert((std::has_facet<std::codecvt<char16_t, char8_t, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char32_t, char8_t, std::mbstate_t> >(loc)));
 #endif
-    assert((std::has_facet<std::codecvt<wchar_t, char, std::mbstate_t> >(loc)));
-
-    assert((std::has_facet<std::moneypunct<char> >(loc)));
-    assert((std::has_facet<std::moneypunct<wchar_t> >(loc)));
-    assert((std::has_facet<std::money_get<char> >(loc)));
-    assert((std::has_facet<std::money_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::money_put<char> >(loc)));
-    assert((std::has_facet<std::money_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::numpunct<char> >(loc)));
-    assert((std::has_facet<std::numpunct<wchar_t> >(loc)));
-    assert((std::has_facet<std::num_get<char> >(loc)));
-    assert((std::has_facet<std::num_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::num_put<char> >(loc)));
-    assert((std::has_facet<std::num_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::time_get<char> >(loc)));
-    assert((std::has_facet<std::time_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::time_put<char> >(loc)));
-    assert((std::has_facet<std::time_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::messages<char> >(loc)));
-    assert((std::has_facet<std::messages<wchar_t> >(loc)));
 }
 
 int main(int, char**)
diff --git a/test/std/localization/locales/locale/locale.cons/locale_facetptr.pass.cpp b/test/std/localization/locales/locale/locale.cons/locale_facetptr.pass.cpp
index 1ae3f59..7243e11 100644
--- a/test/std/localization/locales/locale/locale.cons/locale_facetptr.pass.cpp
+++ b/test/std/localization/locales/locale/locale.cons/locale_facetptr.pass.cpp
@@ -29,43 +29,42 @@
 #include "platform_support.h" // locale name macros
 
 
+template<class CharT>
+void check_for(const std::locale& loc)
+{
+    assert(std::has_facet<std::collate<CharT> >(loc));
+
+    assert(std::has_facet<std::ctype<CharT> >(loc));
+
+    assert((std::has_facet<std::codecvt<CharT, char, std::mbstate_t> >(loc)));
+
+    assert(std::has_facet<std::moneypunct<CharT> >(loc));
+    assert(std::has_facet<std::money_get<CharT> >(loc));
+    assert(std::has_facet<std::money_put<CharT> >(loc));
+
+    assert(std::has_facet<std::numpunct<CharT> >(loc));
+    assert(std::has_facet<std::num_get<CharT> >(loc));
+    assert(std::has_facet<std::num_put<CharT> >(loc));
+
+    assert(std::has_facet<std::time_get<CharT> >(loc));
+    assert(std::has_facet<std::time_put<CharT> >(loc));
+
+    assert(std::has_facet<std::messages<CharT> >(loc));
+}
+
 void check(const std::locale& loc)
 {
-    assert(std::has_facet<std::collate<char> >(loc));
-    assert(std::has_facet<std::collate<wchar_t> >(loc));
+    check_for<char>(loc);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    check_for<wchar_t>(loc);
+#endif
 
-    assert(std::has_facet<std::ctype<char> >(loc));
-    assert(std::has_facet<std::ctype<wchar_t> >(loc));
-    assert((std::has_facet<std::codecvt<char, char, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char16_t, char, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char32_t, char, std::mbstate_t> >(loc)));
 #if TEST_STD_VER > 17
     assert((std::has_facet<std::codecvt<char16_t, char8_t, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char32_t, char8_t, std::mbstate_t> >(loc)));
 #endif
-    assert((std::has_facet<std::codecvt<wchar_t, char, std::mbstate_t> >(loc)));
-
-    assert((std::has_facet<std::moneypunct<char> >(loc)));
-    assert((std::has_facet<std::moneypunct<wchar_t> >(loc)));
-    assert((std::has_facet<std::money_get<char> >(loc)));
-    assert((std::has_facet<std::money_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::money_put<char> >(loc)));
-    assert((std::has_facet<std::money_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::numpunct<char> >(loc)));
-    assert((std::has_facet<std::numpunct<wchar_t> >(loc)));
-    assert((std::has_facet<std::num_get<char> >(loc)));
-    assert((std::has_facet<std::num_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::num_put<char> >(loc)));
-    assert((std::has_facet<std::num_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::time_get<char> >(loc)));
-    assert((std::has_facet<std::time_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::time_put<char> >(loc)));
-    assert((std::has_facet<std::time_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::messages<char> >(loc)));
-    assert((std::has_facet<std::messages<wchar_t> >(loc)));
 }
 
 struct my_facet
diff --git a/test/std/localization/locales/locale/locale.cons/locale_locale_cat.pass.cpp b/test/std/localization/locales/locale/locale.cons/locale_locale_cat.pass.cpp
index 0988908..1c5bfe2 100644
--- a/test/std/localization/locales/locale/locale.cons/locale_locale_cat.pass.cpp
+++ b/test/std/localization/locales/locale/locale.cons/locale_locale_cat.pass.cpp
@@ -30,43 +30,42 @@
 #include "test_macros.h"
 #include "platform_support.h" // locale name macros
 
+template<class CharT>
+void check_for(const std::locale& loc)
+{
+    assert(std::has_facet<std::collate<CharT> >(loc));
+
+    assert(std::has_facet<std::ctype<CharT> >(loc));
+
+    assert((std::has_facet<std::codecvt<CharT, char, std::mbstate_t> >(loc)));
+
+    assert(std::has_facet<std::moneypunct<CharT> >(loc));
+    assert(std::has_facet<std::money_get<CharT> >(loc));
+    assert(std::has_facet<std::money_put<CharT> >(loc));
+
+    assert(std::has_facet<std::numpunct<CharT> >(loc));
+    assert(std::has_facet<std::num_get<CharT> >(loc));
+    assert(std::has_facet<std::num_put<CharT> >(loc));
+
+    assert(std::has_facet<std::time_get<CharT> >(loc));
+    assert(std::has_facet<std::time_put<CharT> >(loc));
+
+    assert(std::has_facet<std::messages<CharT> >(loc));
+}
+
 void check(const std::locale& loc)
 {
-    assert(std::has_facet<std::collate<char> >(loc));
-    assert(std::has_facet<std::collate<wchar_t> >(loc));
+    check_for<char>(loc);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    check_for<wchar_t>(loc);
+#endif
 
-    assert(std::has_facet<std::ctype<char> >(loc));
-    assert(std::has_facet<std::ctype<wchar_t> >(loc));
-    assert((std::has_facet<std::codecvt<char, char, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char16_t, char, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char32_t, char, std::mbstate_t> >(loc)));
 #if TEST_STD_VER > 17
     assert((std::has_facet<std::codecvt<char16_t, char8_t, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char32_t, char8_t, std::mbstate_t> >(loc)));
 #endif
-    assert((std::has_facet<std::codecvt<wchar_t, char, std::mbstate_t> >(loc)));
-
-    assert((std::has_facet<std::moneypunct<char> >(loc)));
-    assert((std::has_facet<std::moneypunct<wchar_t> >(loc)));
-    assert((std::has_facet<std::money_get<char> >(loc)));
-    assert((std::has_facet<std::money_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::money_put<char> >(loc)));
-    assert((std::has_facet<std::money_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::numpunct<char> >(loc)));
-    assert((std::has_facet<std::numpunct<wchar_t> >(loc)));
-    assert((std::has_facet<std::num_get<char> >(loc)));
-    assert((std::has_facet<std::num_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::num_put<char> >(loc)));
-    assert((std::has_facet<std::num_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::time_get<char> >(loc)));
-    assert((std::has_facet<std::time_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::time_put<char> >(loc)));
-    assert((std::has_facet<std::time_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::messages<char> >(loc)));
-    assert((std::has_facet<std::messages<wchar_t> >(loc)));
 }
 
 int main(int, char**)
diff --git a/test/std/localization/locales/locale/locale.cons/locale_string_cat.pass.cpp b/test/std/localization/locales/locale/locale.cons/locale_string_cat.pass.cpp
index 5745f8a..9ab8d0f 100644
--- a/test/std/localization/locales/locale/locale.cons/locale_string_cat.pass.cpp
+++ b/test/std/localization/locales/locale/locale.cons/locale_string_cat.pass.cpp
@@ -30,44 +30,42 @@
 #include "test_macros.h"
 #include "platform_support.h" // locale name macros
 
+template<class CharT>
+void check_for(const std::locale& loc)
+{
+    assert(std::has_facet<std::collate<CharT> >(loc));
+
+    assert(std::has_facet<std::ctype<CharT> >(loc));
+
+    assert((std::has_facet<std::codecvt<CharT, char, std::mbstate_t> >(loc)));
+
+    assert(std::has_facet<std::moneypunct<CharT> >(loc));
+    assert(std::has_facet<std::money_get<CharT> >(loc));
+    assert(std::has_facet<std::money_put<CharT> >(loc));
+
+    assert(std::has_facet<std::numpunct<CharT> >(loc));
+    assert(std::has_facet<std::num_get<CharT> >(loc));
+    assert(std::has_facet<std::num_put<CharT> >(loc));
+
+    assert(std::has_facet<std::time_get<CharT> >(loc));
+    assert(std::has_facet<std::time_put<CharT> >(loc));
+
+    assert(std::has_facet<std::messages<CharT> >(loc));
+}
 
 void check(const std::locale& loc)
 {
-    assert(std::has_facet<std::collate<char> >(loc));
-    assert(std::has_facet<std::collate<wchar_t> >(loc));
+    check_for<char>(loc);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    check_for<wchar_t>(loc);
+#endif
 
-    assert(std::has_facet<std::ctype<char> >(loc));
-    assert(std::has_facet<std::ctype<wchar_t> >(loc));
-    assert((std::has_facet<std::codecvt<char, char, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char16_t, char, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char32_t, char, std::mbstate_t> >(loc)));
 #if TEST_STD_VER > 17
     assert((std::has_facet<std::codecvt<char16_t, char8_t, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char32_t, char8_t, std::mbstate_t> >(loc)));
 #endif
-    assert((std::has_facet<std::codecvt<wchar_t, char, std::mbstate_t> >(loc)));
-
-    assert((std::has_facet<std::moneypunct<char> >(loc)));
-    assert((std::has_facet<std::moneypunct<wchar_t> >(loc)));
-    assert((std::has_facet<std::money_get<char> >(loc)));
-    assert((std::has_facet<std::money_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::money_put<char> >(loc)));
-    assert((std::has_facet<std::money_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::numpunct<char> >(loc)));
-    assert((std::has_facet<std::numpunct<wchar_t> >(loc)));
-    assert((std::has_facet<std::num_get<char> >(loc)));
-    assert((std::has_facet<std::num_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::num_put<char> >(loc)));
-    assert((std::has_facet<std::num_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::time_get<char> >(loc)));
-    assert((std::has_facet<std::time_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::time_put<char> >(loc)));
-    assert((std::has_facet<std::time_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::messages<char> >(loc)));
-    assert((std::has_facet<std::messages<wchar_t> >(loc)));
 }
 
 int main(int, char**)
diff --git a/test/std/localization/locales/locale/locale.cons/string.pass.cpp b/test/std/localization/locales/locale/locale.cons/string.pass.cpp
index 733c7e9..4e51125 100644
--- a/test/std/localization/locales/locale/locale.cons/string.pass.cpp
+++ b/test/std/localization/locales/locale/locale.cons/string.pass.cpp
@@ -29,43 +29,42 @@
 #include "test_macros.h"
 #include "platform_support.h" // locale name macros
 
+template<class CharT>
+void check_for(const std::locale& loc)
+{
+    assert(std::has_facet<std::collate<CharT> >(loc));
+
+    assert(std::has_facet<std::ctype<CharT> >(loc));
+
+    assert((std::has_facet<std::codecvt<CharT, char, std::mbstate_t> >(loc)));
+
+    assert(std::has_facet<std::moneypunct<CharT> >(loc));
+    assert(std::has_facet<std::money_get<CharT> >(loc));
+    assert(std::has_facet<std::money_put<CharT> >(loc));
+
+    assert(std::has_facet<std::numpunct<CharT> >(loc));
+    assert(std::has_facet<std::num_get<CharT> >(loc));
+    assert(std::has_facet<std::num_put<CharT> >(loc));
+
+    assert(std::has_facet<std::time_get<CharT> >(loc));
+    assert(std::has_facet<std::time_put<CharT> >(loc));
+
+    assert(std::has_facet<std::messages<CharT> >(loc));
+}
+
 void check(const std::locale& loc)
 {
-    assert(std::has_facet<std::collate<char> >(loc));
-    assert(std::has_facet<std::collate<wchar_t> >(loc));
+    check_for<char>(loc);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    check_for<wchar_t>(loc);
+#endif
 
-    assert(std::has_facet<std::ctype<char> >(loc));
-    assert(std::has_facet<std::ctype<wchar_t> >(loc));
-    assert((std::has_facet<std::codecvt<char, char, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char16_t, char, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char32_t, char, std::mbstate_t> >(loc)));
 #if TEST_STD_VER > 17
     assert((std::has_facet<std::codecvt<char16_t, char8_t, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char32_t, char8_t, std::mbstate_t> >(loc)));
 #endif
-    assert((std::has_facet<std::codecvt<wchar_t, char, std::mbstate_t> >(loc)));
-
-    assert((std::has_facet<std::moneypunct<char> >(loc)));
-    assert((std::has_facet<std::moneypunct<wchar_t> >(loc)));
-    assert((std::has_facet<std::money_get<char> >(loc)));
-    assert((std::has_facet<std::money_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::money_put<char> >(loc)));
-    assert((std::has_facet<std::money_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::numpunct<char> >(loc)));
-    assert((std::has_facet<std::numpunct<wchar_t> >(loc)));
-    assert((std::has_facet<std::num_get<char> >(loc)));
-    assert((std::has_facet<std::num_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::num_put<char> >(loc)));
-    assert((std::has_facet<std::num_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::time_get<char> >(loc)));
-    assert((std::has_facet<std::time_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::time_put<char> >(loc)));
-    assert((std::has_facet<std::time_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::messages<char> >(loc)));
-    assert((std::has_facet<std::messages<wchar_t> >(loc)));
 }
 
 int main(int, char**)
diff --git a/test/std/localization/locales/locale/locale.members/combine.pass.cpp b/test/std/localization/locales/locale/locale.members/combine.pass.cpp
index 5914bb7..27a533a 100644
--- a/test/std/localization/locales/locale/locale.members/combine.pass.cpp
+++ b/test/std/localization/locales/locale/locale.members/combine.pass.cpp
@@ -26,43 +26,42 @@
 
 #include "test_macros.h"
 
+template<class CharT>
+void check_for(const std::locale& loc)
+{
+    assert(std::has_facet<std::collate<CharT> >(loc));
+
+    assert(std::has_facet<std::ctype<CharT> >(loc));
+
+    assert((std::has_facet<std::codecvt<CharT, char, std::mbstate_t> >(loc)));
+
+    assert(std::has_facet<std::moneypunct<CharT> >(loc));
+    assert(std::has_facet<std::money_get<CharT> >(loc));
+    assert(std::has_facet<std::money_put<CharT> >(loc));
+
+    assert(std::has_facet<std::numpunct<CharT> >(loc));
+    assert(std::has_facet<std::num_get<CharT> >(loc));
+    assert(std::has_facet<std::num_put<CharT> >(loc));
+
+    assert(std::has_facet<std::time_get<CharT> >(loc));
+    assert(std::has_facet<std::time_put<CharT> >(loc));
+
+    assert(std::has_facet<std::messages<CharT> >(loc));
+}
+
 void check(const std::locale& loc)
 {
-    assert(std::has_facet<std::collate<char> >(loc));
-    assert(std::has_facet<std::collate<wchar_t> >(loc));
+    check_for<char>(loc);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    check_for<wchar_t>(loc);
+#endif
 
-    assert(std::has_facet<std::ctype<char> >(loc));
-    assert(std::has_facet<std::ctype<wchar_t> >(loc));
-    assert((std::has_facet<std::codecvt<char, char, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char16_t, char, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char32_t, char, std::mbstate_t> >(loc)));
 #if TEST_STD_VER > 17
     assert((std::has_facet<std::codecvt<char16_t, char8_t, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char32_t, char8_t, std::mbstate_t> >(loc)));
 #endif
-    assert((std::has_facet<std::codecvt<wchar_t, char, std::mbstate_t> >(loc)));
-
-    assert((std::has_facet<std::moneypunct<char> >(loc)));
-    assert((std::has_facet<std::moneypunct<wchar_t> >(loc)));
-    assert((std::has_facet<std::money_get<char> >(loc)));
-    assert((std::has_facet<std::money_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::money_put<char> >(loc)));
-    assert((std::has_facet<std::money_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::numpunct<char> >(loc)));
-    assert((std::has_facet<std::numpunct<wchar_t> >(loc)));
-    assert((std::has_facet<std::num_get<char> >(loc)));
-    assert((std::has_facet<std::num_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::num_put<char> >(loc)));
-    assert((std::has_facet<std::num_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::time_get<char> >(loc)));
-    assert((std::has_facet<std::time_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::time_put<char> >(loc)));
-    assert((std::has_facet<std::time_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::messages<char> >(loc)));
-    assert((std::has_facet<std::messages<wchar_t> >(loc)));
 }
 
 struct my_facet
diff --git a/test/std/localization/locales/locale/locale.operators/compare.pass.cpp b/test/std/localization/locales/locale/locale.operators/compare.pass.cpp
index f912dc6..a93aa18 100644
--- a/test/std/localization/locales/locale/locale.operators/compare.pass.cpp
+++ b/test/std/localization/locales/locale/locale.operators/compare.pass.cpp
@@ -29,11 +29,13 @@
             std::string s3("BaaaaaA");
             assert(l(s3, s2));
         }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         {
             std::wstring s2(L"aaaaaaA");
             std::wstring s3(L"BaaaaaA");
             assert(l(s3, s2));
         }
+#endif
     }
 
   return 0;
diff --git a/test/std/localization/locales/locale/locale.statics/classic.pass.cpp b/test/std/localization/locales/locale/locale.statics/classic.pass.cpp
index f32c243..d7bffbd 100644
--- a/test/std/localization/locales/locale/locale.statics/classic.pass.cpp
+++ b/test/std/localization/locales/locale/locale.statics/classic.pass.cpp
@@ -23,43 +23,42 @@
 
 #include "test_macros.h"
 
+template<class CharT>
+void check_for(const std::locale& loc)
+{
+    assert(std::has_facet<std::collate<CharT> >(loc));
+
+    assert(std::has_facet<std::ctype<CharT> >(loc));
+
+    assert((std::has_facet<std::codecvt<CharT, char, std::mbstate_t> >(loc)));
+
+    assert(std::has_facet<std::moneypunct<CharT> >(loc));
+    assert(std::has_facet<std::money_get<CharT> >(loc));
+    assert(std::has_facet<std::money_put<CharT> >(loc));
+
+    assert(std::has_facet<std::numpunct<CharT> >(loc));
+    assert(std::has_facet<std::num_get<CharT> >(loc));
+    assert(std::has_facet<std::num_put<CharT> >(loc));
+
+    assert(std::has_facet<std::time_get<CharT> >(loc));
+    assert(std::has_facet<std::time_put<CharT> >(loc));
+
+    assert(std::has_facet<std::messages<CharT> >(loc));
+}
+
 void check(const std::locale& loc)
 {
-    assert(std::has_facet<std::collate<char> >(loc));
-    assert(std::has_facet<std::collate<wchar_t> >(loc));
+    check_for<char>(loc);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    check_for<wchar_t>(loc);
+#endif
 
-    assert(std::has_facet<std::ctype<char> >(loc));
-    assert(std::has_facet<std::ctype<wchar_t> >(loc));
-    assert((std::has_facet<std::codecvt<char, char, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char16_t, char, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char32_t, char, std::mbstate_t> >(loc)));
 #if TEST_STD_VER > 17
     assert((std::has_facet<std::codecvt<char16_t, char8_t, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char32_t, char8_t, std::mbstate_t> >(loc)));
 #endif
-    assert((std::has_facet<std::codecvt<wchar_t, char, std::mbstate_t> >(loc)));
-
-    assert((std::has_facet<std::moneypunct<char> >(loc)));
-    assert((std::has_facet<std::moneypunct<wchar_t> >(loc)));
-    assert((std::has_facet<std::money_get<char> >(loc)));
-    assert((std::has_facet<std::money_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::money_put<char> >(loc)));
-    assert((std::has_facet<std::money_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::numpunct<char> >(loc)));
-    assert((std::has_facet<std::numpunct<wchar_t> >(loc)));
-    assert((std::has_facet<std::num_get<char> >(loc)));
-    assert((std::has_facet<std::num_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::num_put<char> >(loc)));
-    assert((std::has_facet<std::num_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::time_get<char> >(loc)));
-    assert((std::has_facet<std::time_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::time_put<char> >(loc)));
-    assert((std::has_facet<std::time_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::messages<char> >(loc)));
-    assert((std::has_facet<std::messages<wchar_t> >(loc)));
 }
 
 int main(int, char**)
diff --git a/test/std/localization/locales/locale/locale.statics/global.pass.cpp b/test/std/localization/locales/locale/locale.statics/global.pass.cpp
index 458fe08..314d4ab 100644
--- a/test/std/localization/locales/locale/locale.statics/global.pass.cpp
+++ b/test/std/localization/locales/locale/locale.statics/global.pass.cpp
@@ -26,43 +26,42 @@
 #include "test_macros.h"
 #include "platform_support.h" // locale name macros
 
+template<class CharT>
+void check_for(const std::locale& loc)
+{
+    assert(std::has_facet<std::collate<CharT> >(loc));
+
+    assert(std::has_facet<std::ctype<CharT> >(loc));
+
+    assert((std::has_facet<std::codecvt<CharT, char, std::mbstate_t> >(loc)));
+
+    assert(std::has_facet<std::moneypunct<CharT> >(loc));
+    assert(std::has_facet<std::money_get<CharT> >(loc));
+    assert(std::has_facet<std::money_put<CharT> >(loc));
+
+    assert(std::has_facet<std::numpunct<CharT> >(loc));
+    assert(std::has_facet<std::num_get<CharT> >(loc));
+    assert(std::has_facet<std::num_put<CharT> >(loc));
+
+    assert(std::has_facet<std::time_get<CharT> >(loc));
+    assert(std::has_facet<std::time_put<CharT> >(loc));
+
+    assert(std::has_facet<std::messages<CharT> >(loc));
+}
+
 void check(const std::locale& loc)
 {
-    assert(std::has_facet<std::collate<char> >(loc));
-    assert(std::has_facet<std::collate<wchar_t> >(loc));
+    check_for<char>(loc);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    check_for<wchar_t>(loc);
+#endif
 
-    assert(std::has_facet<std::ctype<char> >(loc));
-    assert(std::has_facet<std::ctype<wchar_t> >(loc));
-    assert((std::has_facet<std::codecvt<char, char, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char16_t, char, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char32_t, char, std::mbstate_t> >(loc)));
 #if TEST_STD_VER > 17
     assert((std::has_facet<std::codecvt<char16_t, char8_t, std::mbstate_t> >(loc)));
     assert((std::has_facet<std::codecvt<char32_t, char8_t, std::mbstate_t> >(loc)));
 #endif
-    assert((std::has_facet<std::codecvt<wchar_t, char, std::mbstate_t> >(loc)));
-
-    assert((std::has_facet<std::moneypunct<char> >(loc)));
-    assert((std::has_facet<std::moneypunct<wchar_t> >(loc)));
-    assert((std::has_facet<std::money_get<char> >(loc)));
-    assert((std::has_facet<std::money_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::money_put<char> >(loc)));
-    assert((std::has_facet<std::money_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::numpunct<char> >(loc)));
-    assert((std::has_facet<std::numpunct<wchar_t> >(loc)));
-    assert((std::has_facet<std::num_get<char> >(loc)));
-    assert((std::has_facet<std::num_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::num_put<char> >(loc)));
-    assert((std::has_facet<std::num_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::time_get<char> >(loc)));
-    assert((std::has_facet<std::time_get<wchar_t> >(loc)));
-    assert((std::has_facet<std::time_put<char> >(loc)));
-    assert((std::has_facet<std::time_put<wchar_t> >(loc)));
-
-    assert((std::has_facet<std::messages<char> >(loc)));
-    assert((std::has_facet<std::messages<wchar_t> >(loc)));
 }
 
 int main(int, char**)
diff --git a/test/std/namespace/addressable_functions.sh.cpp b/test/std/namespace/addressable_functions.sh.cpp
index de44ba4..d149a6b 100644
--- a/test/std/namespace/addressable_functions.sh.cpp
+++ b/test/std/namespace/addressable_functions.sh.cpp
@@ -28,25 +28,32 @@
 #include <string>
 #include <utility>
 
+#include "test_macros.h"
 
 typedef std::ios_base& (FormatFlagFunction)(std::ios_base&);
 typedef std::basic_ostream<char>& (OstreamManipFunction)(std::basic_ostream<char>&);
-typedef std::basic_ostream<wchar_t>& (WOstreamManipFunction)(std::basic_ostream<wchar_t>&);
 typedef std::basic_istream<char>& (IstreamManipFunction)(std::basic_istream<char>&);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+typedef std::basic_ostream<wchar_t>& (WOstreamManipFunction)(std::basic_ostream<wchar_t>&);
 typedef std::basic_istream<wchar_t>& (WIstreamManipFunction)(std::basic_istream<wchar_t>&);
+#endif
 
 extern FormatFlagFunction* get_formatflag_tu1(std::string);
 extern FormatFlagFunction* get_formatflag_tu2(std::string);
 
 extern OstreamManipFunction* get_ostreammanip_tu1(std::string);
 extern OstreamManipFunction* get_ostreammanip_tu2(std::string);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 extern WOstreamManipFunction* get_wostreammanip_tu1(std::string);
 extern WOstreamManipFunction* get_wostreammanip_tu2(std::string);
+#endif
 
 extern IstreamManipFunction* get_istreammanip_tu1(std::string);
 extern IstreamManipFunction* get_istreammanip_tu2(std::string);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 extern WIstreamManipFunction* get_wistreammanip_tu1(std::string);
 extern WIstreamManipFunction* get_wistreammanip_tu2(std::string);
+#endif
 
 #ifdef TU1
 FormatFlagFunction* get_formatflag_tu1(std::string func)
@@ -107,11 +114,12 @@
 }
 
 // [ostream.manip] (wchar_t)
-#ifdef TU1
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+#   ifdef TU1
 WOstreamManipFunction* get_wostreammanip_tu1(std::string func)
-#else
+#   else
 WOstreamManipFunction* get_wostreammanip_tu2(std::string func)
-#endif
+#   endif
 {
     std::map<std::string, WOstreamManipFunction*> all_funcs;
     typedef std::char_traits<wchar_t> Traits;
@@ -120,6 +128,7 @@
     all_funcs.insert(std::make_pair("flush", &std::flush<wchar_t, Traits>));
     return all_funcs.at(func);
 }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
 // [istream.manip] (char)
 #ifdef TU1
@@ -135,18 +144,19 @@
 }
 
 // [istream.manip] (wchar_t)
-#ifdef TU1
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+#   ifdef TU1
 WIstreamManipFunction* get_wistreammanip_tu1(std::string func)
-#else
+#   else
 WIstreamManipFunction* get_wistreammanip_tu2(std::string func)
-#endif
+#   endif
 {
     std::map<std::string, WIstreamManipFunction*> all_funcs;
     typedef std::char_traits<wchar_t> Traits;
     all_funcs.insert(std::make_pair("ws", &std::ws<wchar_t, Traits>));
     return all_funcs.at(func);
 }
-
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
 #ifdef TU2
     int main(int, char**) {
@@ -179,13 +189,17 @@
         assert(get_ostreammanip_tu1("ends") == get_ostreammanip_tu2("ends"));
         assert(get_ostreammanip_tu1("flush") == get_ostreammanip_tu2("flush"));
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         assert(get_wostreammanip_tu1("endl") == get_wostreammanip_tu2("endl"));
         assert(get_wostreammanip_tu1("ends") == get_wostreammanip_tu2("ends"));
         assert(get_wostreammanip_tu1("flush") == get_wostreammanip_tu2("flush"));
+#endif
 
         assert(get_istreammanip_tu1("ws") == get_istreammanip_tu2("ws"));
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         assert(get_wistreammanip_tu1("ws") == get_wistreammanip_tu2("ws"));
+#endif
 
         return 0;
     }
diff --git a/test/std/ranges/range.utility/range.subrange/ctad.compile.pass.cpp b/test/std/ranges/range.utility/range.subrange/ctad.compile.pass.cpp
index 8ab3aa7..a473fbe 100644
--- a/test/std/ranges/range.utility/range.subrange/ctad.compile.pass.cpp
+++ b/test/std/ranges/range.utility/range.subrange/ctad.compile.pass.cpp
@@ -27,7 +27,7 @@
 static_assert(std::same_as<decltype(std::ranges::subrange(ptr, ptr, 0)),
                            std::ranges::subrange<int*, int*, std::ranges::subrange_kind::sized>>);
 static_assert(std::same_as<decltype(std::ranges::subrange(ptr, nullptr, 0)),
-                           std::ranges::subrange<int*, nullptr_t, std::ranges::subrange_kind::sized>>);
+                           std::ranges::subrange<int*, std::nullptr_t, std::ranges::subrange_kind::sized>>);
 
 struct ForwardRange {
   forward_iterator<int*> begin() const;
diff --git a/test/std/re/re.alg/re.alg.match/awk.locale.pass.cpp b/test/std/re/re.alg/re.alg.match/awk.locale.pass.cpp
index 7588f2d..e4ed37d 100644
--- a/test/std/re/re.alg/re.alg.match/awk.locale.pass.cpp
+++ b/test/std/re/re.alg/re.alg.match/awk.locale.pass.cpp
@@ -71,6 +71,8 @@
                                                  std::regex_constants::awk)));
         assert(m.size() == 0);
     }
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     std::locale::global(std::locale(LOCALE_cs_CZ_ISO8859_2));
     {
         std::wcmatch m;
@@ -112,5 +114,6 @@
                                                  std::regex_constants::awk)));
         assert(m.size() == 0);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
     return 0;
 }
diff --git a/test/std/re/re.alg/re.alg.match/awk.pass.cpp b/test/std/re/re.alg/re.alg.match/awk.pass.cpp
index b92374d..f3385f4 100644
--- a/test/std/re/re.alg/re.alg.match/awk.pass.cpp
+++ b/test/std/re/re.alg/re.alg.match/awk.pass.cpp
@@ -663,6 +663,8 @@
         assert(m.position(0) == 0);
         assert(m.str(0) == s);
     }
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wcmatch m;
         const wchar_t s[] = L"a";
@@ -1303,5 +1305,6 @@
         assert(m.position(0) == 0);
         assert(m.str(0) == s);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
     return 0;
 }
diff --git a/test/std/re/re.alg/re.alg.match/basic.locale.pass.cpp b/test/std/re/re.alg/re.alg.match/basic.locale.pass.cpp
index 3b9b8e2..f2a8d9a 100644
--- a/test/std/re/re.alg/re.alg.match/basic.locale.pass.cpp
+++ b/test/std/re/re.alg/re.alg.match/basic.locale.pass.cpp
@@ -73,6 +73,8 @@
                                                  std::regex_constants::basic)));
         assert(m.size() == 0);
     }
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     std::locale::global(std::locale(LOCALE_cs_CZ_ISO8859_2));
     {
         std::wcmatch m;
@@ -114,5 +116,7 @@
                                                  std::regex_constants::basic)));
         assert(m.size() == 0);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
+
     return 0;
 }
diff --git a/test/std/re/re.alg/re.alg.match/basic.pass.cpp b/test/std/re/re.alg/re.alg.match/basic.pass.cpp
index aacf3ec..d77349d 100644
--- a/test/std/re/re.alg/re.alg.match/basic.pass.cpp
+++ b/test/std/re/re.alg/re.alg.match/basic.pass.cpp
@@ -650,6 +650,7 @@
         assert(m.str(0) == s);
     }
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wcmatch m;
         assert(!std::regex_match(L"a", m, std::wregex()));
@@ -1276,6 +1277,8 @@
         assert(m.position(0) == 0);
         assert(m.str(0) == s);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
+
     { // LWG 2273
         std::regex re("Foo|FooBar");
         std::cmatch m;
diff --git a/test/std/re/re.alg/re.alg.match/ecma.locale.pass.cpp b/test/std/re/re.alg/re.alg.match/ecma.locale.pass.cpp
index 26be206..330f04a 100644
--- a/test/std/re/re.alg/re.alg.match/ecma.locale.pass.cpp
+++ b/test/std/re/re.alg/re.alg.match/ecma.locale.pass.cpp
@@ -34,6 +34,47 @@
 {
     std::locale::global(std::locale(LOCALE_cs_CZ_ISO8859_2));
     {
+        std::cmatch m;
+        const char s[] = "m";
+        assert(std::regex_match(s, m, std::regex("[a[=M=]z]")));
+        assert(m.size() == 1);
+        assert(!m.prefix().matched);
+        assert(m.prefix().first == s);
+        assert(m.prefix().second == m[0].first);
+        assert(!m.suffix().matched);
+        assert(m.suffix().first == m[0].second);
+        assert(m.suffix().second == m[0].second);
+        assert(m.length(0) >= 0 && static_cast<size_t>(m.length(0)) == std::char_traits<char>::length(s));
+        assert(m.position(0) == 0);
+        assert(m.str(0) == s);
+    }
+    {
+        std::cmatch m;
+        const char s[] = "Ch";
+        assert(std::regex_match(s, m, std::regex("[a[.ch.]z]",
+                   std::regex_constants::icase)));
+        assert(m.size() == 1);
+        assert(!m.prefix().matched);
+        assert(m.prefix().first == s);
+        assert(m.prefix().second == m[0].first);
+        assert(!m.suffix().matched);
+        assert(m.suffix().first == m[0].second);
+        assert(m.suffix().second == m[0].second);
+        assert(m.length(0) >= 0 && static_cast<size_t>(m.length(0)) == std::char_traits<char>::length(s));
+        assert(m.position(0) == 0);
+        assert(m.str(0) == s);
+    }
+    std::locale::global(std::locale("C"));
+    {
+        std::cmatch m;
+        const char s[] = "m";
+        assert(!std::regex_match(s, m, std::regex("[a[=M=]z]")));
+        assert(m.size() == 0);
+    }
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    std::locale::global(std::locale(LOCALE_cs_CZ_ISO8859_2));
+    {
         std::wcmatch m;
         const wchar_t s[] = L"m";
         assert(std::regex_match(s, m, std::wregex(L"[a[=M=]z]")));
@@ -71,5 +112,7 @@
         assert(!std::regex_match(s, m, std::wregex(L"[a[=M=]z]")));
         assert(m.size() == 0);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
+
     return 0;
 }
diff --git a/test/std/re/re.alg/re.alg.match/ecma.pass.cpp b/test/std/re/re.alg/re.alg.match/ecma.pass.cpp
index 64be590..58502aa 100644
--- a/test/std/re/re.alg/re.alg.match/ecma.pass.cpp
+++ b/test/std/re/re.alg/re.alg.match/ecma.pass.cpp
@@ -670,6 +670,7 @@
         assert(m.str(0) == s);
     }
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wcmatch m;
         const wchar_t s[] = L"a";
@@ -1304,6 +1305,7 @@
         assert(m.position(0) == 0);
         assert(m.str(0) == s);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/re/re.alg/re.alg.match/extended.locale.pass.cpp b/test/std/re/re.alg/re.alg.match/extended.locale.pass.cpp
index 5a0dd18..b314fcd 100644
--- a/test/std/re/re.alg/re.alg.match/extended.locale.pass.cpp
+++ b/test/std/re/re.alg/re.alg.match/extended.locale.pass.cpp
@@ -73,6 +73,8 @@
                                                  std::regex_constants::extended)));
         assert(m.size() == 0);
     }
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     std::locale::global(std::locale(LOCALE_cs_CZ_ISO8859_2));
     {
         std::wcmatch m;
@@ -114,5 +116,7 @@
                                                  std::regex_constants::extended)));
         assert(m.size() == 0);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
+
     return 0;
 }
diff --git a/test/std/re/re.alg/re.alg.match/extended.pass.cpp b/test/std/re/re.alg/re.alg.match/extended.pass.cpp
index e9d4491..b3be567 100644
--- a/test/std/re/re.alg/re.alg.match/extended.pass.cpp
+++ b/test/std/re/re.alg/re.alg.match/extended.pass.cpp
@@ -665,6 +665,7 @@
         assert(m.str(0) == s);
     }
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wcmatch m;
         const wchar_t s[] = L"a";
@@ -1307,6 +1308,7 @@
         assert(m.position(0) == 0);
         assert(m.str(0) == s);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/re/re.alg/re.alg.search/awk.locale.pass.cpp b/test/std/re/re.alg/re.alg.search/awk.locale.pass.cpp
index 2759278..8108c2b 100644
--- a/test/std/re/re.alg/re.alg.search/awk.locale.pass.cpp
+++ b/test/std/re/re.alg/re.alg.search/awk.locale.pass.cpp
@@ -73,6 +73,8 @@
                                                  std::regex_constants::awk)));
         assert(m.size() == 0);
     }
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     std::locale::global(std::locale(LOCALE_cs_CZ_ISO8859_2));
     {
         std::wcmatch m;
@@ -114,5 +116,7 @@
                                                  std::regex_constants::awk)));
         assert(m.size() == 0);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
+
     return 0;
 }
diff --git a/test/std/re/re.alg/re.alg.search/awk.pass.cpp b/test/std/re/re.alg/re.alg.search/awk.pass.cpp
index e33f583..741a74f 100644
--- a/test/std/re/re.alg/re.alg.search/awk.pass.cpp
+++ b/test/std/re/re.alg/re.alg.search/awk.pass.cpp
@@ -753,6 +753,8 @@
         assert(m.position(0) == 0);
         assert(m.str(0) == s);
     }
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wcmatch m;
         const wchar_t s[] = L"a";
@@ -1483,6 +1485,7 @@
         assert(m.position(0) == 0);
         assert(m.str(0) == s);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/re/re.alg/re.alg.search/basic.locale.pass.cpp b/test/std/re/re.alg/re.alg.search/basic.locale.pass.cpp
index 130ef49..4d1532e 100644
--- a/test/std/re/re.alg/re.alg.search/basic.locale.pass.cpp
+++ b/test/std/re/re.alg/re.alg.search/basic.locale.pass.cpp
@@ -73,6 +73,8 @@
                                                  std::regex_constants::basic)));
         assert(m.size() == 0);
     }
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     std::locale::global(std::locale(LOCALE_cs_CZ_ISO8859_2));
     {
         std::wcmatch m;
@@ -114,5 +116,7 @@
                                                  std::regex_constants::basic)));
         assert(m.size() == 0);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
+
     return 0;
 }
diff --git a/test/std/re/re.alg/re.alg.search/basic.pass.cpp b/test/std/re/re.alg/re.alg.search/basic.pass.cpp
index 0ea290e..287ca99 100644
--- a/test/std/re/re.alg/re.alg.search/basic.pass.cpp
+++ b/test/std/re/re.alg/re.alg.search/basic.pass.cpp
@@ -740,6 +740,7 @@
         assert(m.str(0) == s);
     }
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wcmatch m;
         assert(!std::regex_search(L"a", m, std::wregex()));
@@ -1456,6 +1457,8 @@
         assert(m.position(0) == 0);
         assert(m.str(0) == s);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
+
     { // LWG 2273
         std::regex re("Foo|FooBar");
         std::cmatch m;
diff --git a/test/std/re/re.alg/re.alg.search/ecma.locale.pass.cpp b/test/std/re/re.alg/re.alg.search/ecma.locale.pass.cpp
index e97c4df..3da1e58 100644
--- a/test/std/re/re.alg/re.alg.search/ecma.locale.pass.cpp
+++ b/test/std/re/re.alg/re.alg.search/ecma.locale.pass.cpp
@@ -71,6 +71,8 @@
         assert(!std::regex_search(s, m, std::regex("[a[=M=]z]")));
         assert(m.size() == 0);
     }
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     std::locale::global(std::locale(LOCALE_cs_CZ_ISO8859_2));
     {
         std::wcmatch m;
@@ -110,5 +112,7 @@
         assert(!std::regex_search(s, m, std::wregex(L"[a[=M=]z]")));
         assert(m.size() == 0);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
+
     return 0;
 }
diff --git a/test/std/re/re.alg/re.alg.search/ecma.pass.cpp b/test/std/re/re.alg/re.alg.search/ecma.pass.cpp
index 57f7182..00977d3 100644
--- a/test/std/re/re.alg/re.alg.search/ecma.pass.cpp
+++ b/test/std/re/re.alg/re.alg.search/ecma.pass.cpp
@@ -763,6 +763,7 @@
         assert(m.str(0) == s);
     }
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wcmatch m;
         const wchar_t s[] = L"a";
@@ -1502,6 +1503,7 @@
         assert(m.position(0) == 0);
         assert(m.str(0) == s);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/re/re.alg/re.alg.search/extended.locale.pass.cpp b/test/std/re/re.alg/re.alg.search/extended.locale.pass.cpp
index 8902d06..2030602 100644
--- a/test/std/re/re.alg/re.alg.search/extended.locale.pass.cpp
+++ b/test/std/re/re.alg/re.alg.search/extended.locale.pass.cpp
@@ -73,6 +73,8 @@
                                                  std::regex_constants::extended)));
         assert(m.size() == 0);
     }
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     std::locale::global(std::locale(LOCALE_cs_CZ_ISO8859_2));
     {
         std::wcmatch m;
@@ -114,5 +116,7 @@
                                                  std::regex_constants::extended)));
         assert(m.size() == 0);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
+
     return 0;
 }
diff --git a/test/std/re/re.alg/re.alg.search/extended.pass.cpp b/test/std/re/re.alg/re.alg.search/extended.pass.cpp
index b5b7718..8ffedfc 100644
--- a/test/std/re/re.alg/re.alg.search/extended.pass.cpp
+++ b/test/std/re/re.alg/re.alg.search/extended.pass.cpp
@@ -756,6 +756,7 @@
         assert(m.str(0) == s);
     }
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wcmatch m;
         const wchar_t s[] = L"a";
@@ -1488,6 +1489,7 @@
         assert(m.position(0) == 0);
         assert(m.str(0) == s);
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/re/re.iter/re.regiter/re.regiter.cnstr/default.pass.cpp b/test/std/re/re.iter/re.regiter/re.regiter.cnstr/default.pass.cpp
index 75bd9ca..52b3309 100644
--- a/test/std/re/re.iter/re.regiter/re.regiter.cnstr/default.pass.cpp
+++ b/test/std/re/re.iter/re.regiter/re.regiter.cnstr/default.pass.cpp
@@ -28,7 +28,9 @@
 int main(int, char**)
 {
     test<char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<wchar_t>();
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.iter/re.regiter/types.pass.cpp b/test/std/re/re.iter/re.regiter/types.pass.cpp
index b96fec7..7d30b0a 100644
--- a/test/std/re/re.iter/re.regiter/types.pass.cpp
+++ b/test/std/re/re.iter/re.regiter/types.pass.cpp
@@ -41,7 +41,9 @@
 int main(int, char**)
 {
     test<char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<wchar_t>();
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.regex/re.regex.construct/deduct.pass.cpp b/test/std/re/re.regex/re.regex.construct/deduct.pass.cpp
index feabcfc..db4fba0 100644
--- a/test/std/re/re.regex/re.regex.construct/deduct.pass.cpp
+++ b/test/std/re/re.regex/re.regex.construct/deduct.pass.cpp
@@ -42,6 +42,7 @@
     assert(re.mark_count() == 0);
     }
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
     std::wstring s1(L"\\(a\\)");
     std::basic_regex re(s1.begin(), s1.end(), std::regex_constants::basic);
@@ -50,6 +51,7 @@
     assert(re.flags() == std::regex_constants::basic);
     assert(re.mark_count() == 1);
     }
+#endif
 
 //  Test the implicit deduction guides
     {
@@ -60,6 +62,7 @@
     assert(re.mark_count() == 2);
     }
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
 //  basic_regex(string, flag_type);
     std::basic_regex re(L"(a([bc]))"s, std::regex_constants::awk);
@@ -67,6 +70,7 @@
     assert(re.flags() == std::regex_constants::awk);
     assert(re.mark_count() == 2);
     }
+#endif
 
     {
 //  basic_regex(const charT*);
@@ -76,6 +80,7 @@
     assert(re.mark_count() == 0);
     }
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
 //  basic_regex(const charT*, flag_type);
     std::basic_regex re(L"ABCDE", std::regex_constants::grep);
@@ -83,6 +88,7 @@
     assert(re.flags() == std::regex_constants::grep);
     assert(re.mark_count() == 0);
     }
+#endif
 
     {
 //  basic_regex(const charT*, size_t);
@@ -92,6 +98,7 @@
     assert(re.mark_count() == 0);
     }
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
 //  basic_regex(const charT*, size_t, flag_type);
     std::basic_regex re(L"ABCDEDEF", 8, std::regex_constants::awk);
@@ -99,6 +106,7 @@
     assert(re.flags() == std::regex_constants::awk);
     assert(re.mark_count() == 0);
     }
+#endif
 
     {
 //  basic_regex(const basic_regex &);
@@ -123,6 +131,7 @@
     assert(re.mark_count() == 0);
     }
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
 //  basic_regex(initializer_list, flag_type);
     std::basic_regex re({L'A', L'B', L'F', L'E', L'D'}, std::regex_constants::grep);
@@ -130,6 +139,7 @@
     assert(re.flags() == std::regex_constants::grep);
     assert(re.mark_count() == 0);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.regex/re.regex.construct/default.pass.cpp b/test/std/re/re.regex/re.regex.construct/default.pass.cpp
index 9705d70..f0abdbf 100644
--- a/test/std/re/re.regex/re.regex.construct/default.pass.cpp
+++ b/test/std/re/re.regex/re.regex.construct/default.pass.cpp
@@ -28,7 +28,9 @@
 int main(int, char**)
 {
     test<char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<wchar_t>();
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.results/re.results.all/get_allocator.pass.cpp b/test/std/re/re.results/re.results.all/get_allocator.pass.cpp
index 33b5970..84ef708 100644
--- a/test/std/re/re.results/re.results.all/get_allocator.pass.cpp
+++ b/test/std/re/re.results/re.results.all/get_allocator.pass.cpp
@@ -31,7 +31,9 @@
 int main(int, char**)
 {
     test<char>(test_allocator<std::sub_match<const char*> >(3));
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<wchar_t>(test_allocator<std::sub_match<const wchar_t*> >(3));
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.results/re.results.const/allocator.pass.cpp b/test/std/re/re.results/re.results.const/allocator.pass.cpp
index 6599546..5d152c4 100644
--- a/test/std/re/re.results/re.results.const/allocator.pass.cpp
+++ b/test/std/re/re.results/re.results.const/allocator.pass.cpp
@@ -31,7 +31,9 @@
 int main(int, char**)
 {
     test<char>(test_allocator<std::sub_match<const char*> >(3));
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<wchar_t>(test_allocator<std::sub_match<const wchar_t*> >(3));
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.results/re.results.const/copy.pass.cpp b/test/std/re/re.results/re.results.const/copy.pass.cpp
index 88b8093..be9585e 100644
--- a/test/std/re/re.results/re.results.const/copy.pass.cpp
+++ b/test/std/re/re.results/re.results.const/copy.pass.cpp
@@ -33,10 +33,14 @@
 int main(int, char**)
 {
     test<char>   (std::allocator<std::sub_match<const char *> >());
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<wchar_t>(std::allocator<std::sub_match<const wchar_t *> >());
+#endif
 
     test<char>   (test_allocator<std::sub_match<const char*> >(3));
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<wchar_t>(test_allocator<std::sub_match<const wchar_t*> >(3));
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.results/re.results.const/copy_assign.pass.cpp b/test/std/re/re.results/re.results.const/copy_assign.pass.cpp
index 1b220df..33dbeb9 100644
--- a/test/std/re/re.results/re.results.const/copy_assign.pass.cpp
+++ b/test/std/re/re.results/re.results.const/copy_assign.pass.cpp
@@ -37,15 +37,21 @@
 int main(int, char**)
 {
     test<char>   (std::allocator<std::sub_match<const char *> >());
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<wchar_t>(std::allocator<std::sub_match<const wchar_t *> >());
+#endif
 
-//  test_allocator has POCCA -> false
+    // test_allocator has POCCA -> false
     test<char>   (test_allocator<std::sub_match<const char*> >(3));
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<wchar_t>(test_allocator<std::sub_match<const wchar_t*> >(3));
+#endif
 
-//  other_allocator has POCCA -> true
+    // other_allocator has POCCA -> true
     test<char>   (other_allocator<std::sub_match<const char*> >(3));
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<wchar_t>(other_allocator<std::sub_match<const wchar_t*> >(3));
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.results/re.results.const/default.pass.cpp b/test/std/re/re.results/re.results.const/default.pass.cpp
index 52a7282..bcb2462 100644
--- a/test/std/re/re.results/re.results.const/default.pass.cpp
+++ b/test/std/re/re.results/re.results.const/default.pass.cpp
@@ -46,7 +46,9 @@
 int main(int, char**)
 {
     test<char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<wchar_t>();
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.results/re.results.const/move.pass.cpp b/test/std/re/re.results/re.results.const/move.pass.cpp
index e960cc6..82f2b3e 100644
--- a/test/std/re/re.results/re.results.const/move.pass.cpp
+++ b/test/std/re/re.results/re.results.const/move.pass.cpp
@@ -38,12 +38,16 @@
 int main(int, char**)
 {
     test<char>   (std::allocator<std::sub_match<const char *> >());
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<wchar_t>(std::allocator<std::sub_match<const wchar_t *> >());
+#endif
 
     test<char>   (test_allocator<std::sub_match<const char*> >(3));
     assert(test_alloc_base::moved == 1);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<wchar_t>(test_allocator<std::sub_match<const wchar_t*> >(3));
     assert(test_alloc_base::moved == 2);
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.results/re.results.const/move_assign.pass.cpp b/test/std/re/re.results/re.results.const/move_assign.pass.cpp
index 42393f1..a8c269d 100644
--- a/test/std/re/re.results/re.results.const/move_assign.pass.cpp
+++ b/test/std/re/re.results/re.results.const/move_assign.pass.cpp
@@ -38,15 +38,21 @@
 int main(int, char**)
 {
     test<char>   (std::allocator<std::sub_match<const char *> >());
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<wchar_t>(std::allocator<std::sub_match<const wchar_t *> >());
+#endif
 
-//  test_allocator has POCMA -> false
+    // test_allocator has POCMA -> false
     test<char>   (test_allocator<std::sub_match<const char*> >(3));
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<wchar_t>(test_allocator<std::sub_match<const wchar_t*> >(3));
+#endif
 
-//  other_allocator has POCMA -> true
+    // other_allocator has POCMA -> true
     test<char>   (other_allocator<std::sub_match<const char*> >(3));
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<wchar_t>(other_allocator<std::sub_match<const wchar_t*> >(3));
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.results/re.results.form/form1.pass.cpp b/test/std/re/re.results/re.results.form/form1.pass.cpp
index f435de8..4bf888d 100644
--- a/test/std/re/re.results/re.results.form/form1.pass.cpp
+++ b/test/std/re/re.results/re.results.form/form1.pass.cpp
@@ -114,6 +114,7 @@
         assert(std::string(out) == "match: cdefghi, m[1]: , m[2]: ");
     }
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::match_results<const wchar_t*> m;
         const wchar_t s[] = L"abcdefghijk";
@@ -152,6 +153,7 @@
         assert(r == out + 34);
         assert(std::wstring(out) == L"match: cdefghi, m[1]: efg, m[2]: e");
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/re/re.results/re.results.form/form2.pass.cpp b/test/std/re/re.results/re.results.form/form2.pass.cpp
index fc0c0ad..91b7137 100644
--- a/test/std/re/re.results/re.results.form/form2.pass.cpp
+++ b/test/std/re/re.results/re.results.form/form2.pass.cpp
@@ -25,7 +25,6 @@
 int main(int, char**)
 {
     typedef std::basic_string<char, std::char_traits<char>, test_allocator<char> > nstr;
-    typedef std::basic_string<wchar_t, std::char_traits<wchar_t>, test_allocator<wchar_t> > wstr;
     {
         std::match_results<const char*> m;
         const char s[] = "abcdefghijk";
@@ -62,6 +61,8 @@
         assert(std::string(out) == "match: cdefghi, m[1]: efg, m[2]: e");
     }
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    typedef std::basic_string<wchar_t, std::char_traits<wchar_t>, test_allocator<wchar_t> > wstr;
     {
         std::match_results<const wchar_t*> m;
         const wchar_t s[] = L"abcdefghijk";
@@ -97,6 +98,7 @@
         assert(r == out + 34);
         assert(std::wstring(out) == L"match: cdefghi, m[1]: efg, m[2]: e");
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/re/re.results/re.results.form/form3.pass.cpp b/test/std/re/re.results/re.results.form/form3.pass.cpp
index 67bd66a..384cf17 100644
--- a/test/std/re/re.results/re.results.form/form3.pass.cpp
+++ b/test/std/re/re.results/re.results.form/form3.pass.cpp
@@ -24,7 +24,6 @@
 int main(int, char**)
 {
     typedef std::basic_string<char, std::char_traits<char>, test_allocator<char> > nstr;
-    typedef std::basic_string<wchar_t, std::char_traits<wchar_t>, test_allocator<wchar_t> > wstr;
     {
         std::match_results<const char*> m;
         const char s[] = "abcdefghijk";
@@ -53,6 +52,8 @@
         assert(out == "match: cdefghi, m[1]: efg, m[2]: e");
     }
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    typedef std::basic_string<wchar_t, std::char_traits<wchar_t>, test_allocator<wchar_t> > wstr;
     {
         std::match_results<const wchar_t*> m;
         const wchar_t s[] = L"abcdefghijk";
@@ -80,6 +81,7 @@
         wstr out = m.format(fmt, std::regex_constants::format_sed);
         assert(out == L"match: cdefghi, m[1]: efg, m[2]: e");
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/re/re.results/re.results.form/form4.pass.cpp b/test/std/re/re.results/re.results.form/form4.pass.cpp
index 69152f7..7bd25d9 100644
--- a/test/std/re/re.results/re.results.form/form4.pass.cpp
+++ b/test/std/re/re.results/re.results.form/form4.pass.cpp
@@ -48,6 +48,7 @@
         assert(out == "match: cdefghi, m[1]: efg, m[2]: e");
     }
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::match_results<const wchar_t*> m;
         const wchar_t s[] = L"abcdefghijk";
@@ -75,6 +76,7 @@
         std::wstring out = m.format(fmt, std::regex_constants::format_sed);
         assert(out == L"match: cdefghi, m[1]: efg, m[2]: e");
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/re/re.submatch/re.submatch.members/compare_string_type.pass.cpp b/test/std/re/re.submatch/re.submatch.members/compare_string_type.pass.cpp
index 6b57a19..31f2737 100644
--- a/test/std/re/re.submatch/re.submatch.members/compare_string_type.pass.cpp
+++ b/test/std/re/re.submatch/re.submatch.members/compare_string_type.pass.cpp
@@ -31,6 +31,7 @@
         assert(sm.compare(string()) > 0);
         assert(sm.compare(string("123")) == 0);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef wchar_t CharT;
         typedef std::sub_match<const CharT*> SM;
@@ -44,6 +45,7 @@
         assert(sm.compare(string()) > 0);
         assert(sm.compare(string(L"123")) == 0);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.submatch/re.submatch.members/compare_sub_match.pass.cpp b/test/std/re/re.submatch/re.submatch.members/compare_sub_match.pass.cpp
index 6d0976b..fbd21e3 100644
--- a/test/std/re/re.submatch/re.submatch.members/compare_sub_match.pass.cpp
+++ b/test/std/re/re.submatch/re.submatch.members/compare_sub_match.pass.cpp
@@ -34,6 +34,7 @@
         sm2.matched = true;
         assert(sm.compare(sm2) == 0);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef wchar_t CharT;
         typedef std::sub_match<const CharT*> SM;
@@ -50,6 +51,7 @@
         sm2.matched = true;
         assert(sm.compare(sm2) == 0);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.submatch/re.submatch.members/compare_value_type_ptr.pass.cpp b/test/std/re/re.submatch/re.submatch.members/compare_value_type_ptr.pass.cpp
index 42e6ab9..b213a51 100644
--- a/test/std/re/re.submatch/re.submatch.members/compare_value_type_ptr.pass.cpp
+++ b/test/std/re/re.submatch/re.submatch.members/compare_value_type_ptr.pass.cpp
@@ -30,6 +30,7 @@
         assert(sm.compare("") > 0);
         assert(sm.compare("123") == 0);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef wchar_t CharT;
         typedef std::sub_match<const CharT*> SM;
@@ -42,6 +43,7 @@
         assert(sm.compare(L"") > 0);
         assert(sm.compare(L"123") == 0);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.submatch/re.submatch.members/default.pass.cpp b/test/std/re/re.submatch/re.submatch.members/default.pass.cpp
index c34591f..c828f49 100644
--- a/test/std/re/re.submatch/re.submatch.members/default.pass.cpp
+++ b/test/std/re/re.submatch/re.submatch.members/default.pass.cpp
@@ -24,12 +24,14 @@
         SM sm;
         assert(sm.matched == false);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef wchar_t CharT;
         typedef std::sub_match<const CharT*> SM;
         SM sm;
         assert(sm.matched == false);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.submatch/re.submatch.members/length.pass.cpp b/test/std/re/re.submatch/re.submatch.members/length.pass.cpp
index 5246eb3..1027bd7 100644
--- a/test/std/re/re.submatch/re.submatch.members/length.pass.cpp
+++ b/test/std/re/re.submatch/re.submatch.members/length.pass.cpp
@@ -29,6 +29,7 @@
         sm.matched = true;
         assert(sm.length() == 3);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef wchar_t CharT;
         typedef std::sub_match<const CharT*> SM;
@@ -40,6 +41,7 @@
         sm.matched = true;
         assert(sm.length() == 3);
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.submatch/re.submatch.members/operator_string.pass.cpp b/test/std/re/re.submatch/re.submatch.members/operator_string.pass.cpp
index 051ecc3..08a9dbf 100644
--- a/test/std/re/re.submatch/re.submatch.members/operator_string.pass.cpp
+++ b/test/std/re/re.submatch/re.submatch.members/operator_string.pass.cpp
@@ -31,6 +31,7 @@
         str = sm;
         assert(str == std::string("123"));
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef wchar_t CharT;
         typedef std::sub_match<const CharT*> SM;
@@ -44,6 +45,7 @@
         str = sm;
         assert(str == std::wstring(L"123"));
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.submatch/re.submatch.members/str.pass.cpp b/test/std/re/re.submatch/re.submatch.members/str.pass.cpp
index af39ee9..ffdcbaa 100644
--- a/test/std/re/re.submatch/re.submatch.members/str.pass.cpp
+++ b/test/std/re/re.submatch/re.submatch.members/str.pass.cpp
@@ -31,6 +31,7 @@
         str = sm.str();
         assert(str == std::string("123"));
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef wchar_t CharT;
         typedef std::sub_match<const CharT*> SM;
@@ -44,6 +45,7 @@
         str = sm.str();
         assert(str == std::wstring(L"123"));
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.submatch/re.submatch.op/compare.pass.cpp b/test/std/re/re.submatch/re.submatch.op/compare.pass.cpp
index e332a83..be072b1 100644
--- a/test/std/re/re.submatch/re.submatch.op/compare.pass.cpp
+++ b/test/std/re/re.submatch/re.submatch.op/compare.pass.cpp
@@ -280,10 +280,12 @@
 {
     test(std::string("123"), std::string("123"));
     test(std::string("1234"), std::string("123"));
+    test(std::string("123\000" "56", 6), std::string("123\000" "56", 6), false);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test(std::wstring(L"123"), std::wstring(L"123"));
     test(std::wstring(L"1234"), std::wstring(L"123"));
-    test(std::string("123\000" "56", 6), std::string("123\000" "56", 6), false);
     test(std::wstring(L"123\000" L"56", 6), std::wstring(L"123\000" L"56", 6), false);
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.submatch/re.submatch.op/stream.pass.cpp b/test/std/re/re.submatch/re.submatch.op/stream.pass.cpp
index 070266d..244d78d 100644
--- a/test/std/re/re.submatch/re.submatch.op/stream.pass.cpp
+++ b/test/std/re/re.submatch/re.submatch.op/stream.pass.cpp
@@ -38,7 +38,9 @@
 int main(int, char**)
 {
     test(std::string("123"));
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test(std::wstring(L"123"));
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.submatch/types.pass.cpp b/test/std/re/re.submatch/types.pass.cpp
index 831eec1..3c23d72 100644
--- a/test/std/re/re.submatch/types.pass.cpp
+++ b/test/std/re/re.submatch/types.pass.cpp
@@ -37,11 +37,16 @@
         static_assert((std::is_same<SM::string_type, std::string>::value), "");
         static_assert((std::is_convertible<SM*, std::pair<char*, char*>*>::value), "");
 
+        static_assert((std::is_same<std::csub_match, std::sub_match<const char*> >::value), "");
+        static_assert((std::is_same<std::ssub_match, std::sub_match<std::string::const_iterator> >::value), "");
+
         SM sm;
         sm.first = nullptr;
         sm.second = nullptr;
         sm.matched = false;
     }
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef std::sub_match<wchar_t*> SM;
         static_assert((std::is_same<SM::iterator, wchar_t*>::value), "");
@@ -50,17 +55,15 @@
         static_assert((std::is_same<SM::string_type, std::wstring>::value), "");
         static_assert((std::is_convertible<SM*, std::pair<wchar_t*, wchar_t*>*>::value), "");
 
+        static_assert((std::is_same<std::wcsub_match, std::sub_match<const wchar_t*> >::value), "");
+        static_assert((std::is_same<std::wssub_match, std::sub_match<std::wstring::const_iterator> >::value), "");
+
         SM sm;
         sm.first = nullptr;
         sm.second = nullptr;
         sm.matched = false;
     }
-    {
-        static_assert((std::is_same<std::csub_match, std::sub_match<const char*> >::value), "");
-        static_assert((std::is_same<std::wcsub_match, std::sub_match<const wchar_t*> >::value), "");
-        static_assert((std::is_same<std::ssub_match, std::sub_match<std::string::const_iterator> >::value), "");
-        static_assert((std::is_same<std::wssub_match, std::sub_match<std::wstring::const_iterator> >::value), "");
-    }
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.syn/wcmatch.pass.cpp b/test/std/re/re.syn/wcmatch.pass.cpp
index f373e57..3f35901 100644
--- a/test/std/re/re.syn/wcmatch.pass.cpp
+++ b/test/std/re/re.syn/wcmatch.pass.cpp
@@ -10,6 +10,8 @@
 
 // typedef match_results<const wchar_t*>   wcmatch;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <regex>
 #include <type_traits>
 #include "test_macros.h"
diff --git a/test/std/re/re.syn/wcregex_iterator.pass.cpp b/test/std/re/re.syn/wcregex_iterator.pass.cpp
index 3425c98..78d354c 100644
--- a/test/std/re/re.syn/wcregex_iterator.pass.cpp
+++ b/test/std/re/re.syn/wcregex_iterator.pass.cpp
@@ -10,6 +10,8 @@
 
 // typedef regex_iterator<const wchar_t*>   wcregex_iterator;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <regex>
 #include <type_traits>
 #include "test_macros.h"
diff --git a/test/std/re/re.syn/wcregex_token_iterator.pass.cpp b/test/std/re/re.syn/wcregex_token_iterator.pass.cpp
index 2176538..2f88b89 100644
--- a/test/std/re/re.syn/wcregex_token_iterator.pass.cpp
+++ b/test/std/re/re.syn/wcregex_token_iterator.pass.cpp
@@ -10,6 +10,8 @@
 
 // typedef regex_token_iterator<const wchar_t*>   wcregex_token_iterator;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <regex>
 #include <type_traits>
 #include "test_macros.h"
diff --git a/test/std/re/re.syn/wcsub_match.pass.cpp b/test/std/re/re.syn/wcsub_match.pass.cpp
index 86a2103..0b71ee7 100644
--- a/test/std/re/re.syn/wcsub_match.pass.cpp
+++ b/test/std/re/re.syn/wcsub_match.pass.cpp
@@ -10,6 +10,8 @@
 
 // typedef sub_match<const wchar_t*>   wcsub_match;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <regex>
 #include <type_traits>
 #include "test_macros.h"
diff --git a/test/std/re/re.syn/wregex.pass.cpp b/test/std/re/re.syn/wregex.pass.cpp
index 5be6f6f..15df351 100644
--- a/test/std/re/re.syn/wregex.pass.cpp
+++ b/test/std/re/re.syn/wregex.pass.cpp
@@ -10,6 +10,8 @@
 
 // typedef basic_regex<wchar_t> wregex;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <regex>
 #include <type_traits>
 #include "test_macros.h"
diff --git a/test/std/re/re.syn/wsmatch.pass.cpp b/test/std/re/re.syn/wsmatch.pass.cpp
index 760057e..5518a5c 100644
--- a/test/std/re/re.syn/wsmatch.pass.cpp
+++ b/test/std/re/re.syn/wsmatch.pass.cpp
@@ -10,6 +10,8 @@
 
 // typedef match_results<wstring::const_iterator>   wsmatch;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <regex>
 #include <type_traits>
 #include "test_macros.h"
diff --git a/test/std/re/re.syn/wsregex_iterator.pass.cpp b/test/std/re/re.syn/wsregex_iterator.pass.cpp
index b1d7edf..461b147 100644
--- a/test/std/re/re.syn/wsregex_iterator.pass.cpp
+++ b/test/std/re/re.syn/wsregex_iterator.pass.cpp
@@ -10,6 +10,8 @@
 
 // typedef regex_iterator<wstring::const_iterator>   wsregex_iterator;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <regex>
 #include <type_traits>
 #include "test_macros.h"
diff --git a/test/std/re/re.syn/wsregex_token_iterator.pass.cpp b/test/std/re/re.syn/wsregex_token_iterator.pass.cpp
index 58454a5..520671c 100644
--- a/test/std/re/re.syn/wsregex_token_iterator.pass.cpp
+++ b/test/std/re/re.syn/wsregex_token_iterator.pass.cpp
@@ -10,6 +10,8 @@
 
 // typedef regex_token_iterator<wstring::const_iterator>   wsregex_token_iterator;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <regex>
 #include <type_traits>
 #include "test_macros.h"
diff --git a/test/std/re/re.syn/wssub_match.pass.cpp b/test/std/re/re.syn/wssub_match.pass.cpp
index 7ca6dc7..cf53f28 100644
--- a/test/std/re/re.syn/wssub_match.pass.cpp
+++ b/test/std/re/re.syn/wssub_match.pass.cpp
@@ -10,6 +10,8 @@
 
 // typedef sub_match<wstring::const_iterator>   wssub_match;
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <regex>
 #include <type_traits>
 #include "test_macros.h"
diff --git a/test/std/re/re.traits/default.pass.cpp b/test/std/re/re.traits/default.pass.cpp
index 432de84..ff817cb 100644
--- a/test/std/re/re.traits/default.pass.cpp
+++ b/test/std/re/re.traits/default.pass.cpp
@@ -23,18 +23,27 @@
 int main(int, char**)
 {
     {
-        std::regex_traits<char> t1;
-        assert(t1.getloc().name() == "C");
-        std::regex_traits<wchar_t> t2;
-        assert(t2.getloc().name() == "C");
+        std::regex_traits<char> t;
+        assert(t.getloc().name() == "C");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    {
+        std::regex_traits<wchar_t> t;
+        assert(t.getloc().name() == "C");
+    }
+#endif
     {
         std::locale::global(std::locale(LOCALE_en_US_UTF_8));
-        std::regex_traits<char> t1;
-        assert(t1.getloc().name() == LOCALE_en_US_UTF_8);
-        std::regex_traits<wchar_t> t2;
-        assert(t2.getloc().name() == LOCALE_en_US_UTF_8);
+        std::regex_traits<char> t;
+        assert(t.getloc().name() == LOCALE_en_US_UTF_8);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    {
+        std::locale::global(std::locale(LOCALE_en_US_UTF_8));
+        std::regex_traits<wchar_t> t;
+        assert(t.getloc().name() == LOCALE_en_US_UTF_8);
+    }
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.traits/getloc.pass.cpp b/test/std/re/re.traits/getloc.pass.cpp
index dbc35de..55820cc 100644
--- a/test/std/re/re.traits/getloc.pass.cpp
+++ b/test/std/re/re.traits/getloc.pass.cpp
@@ -23,18 +23,27 @@
 int main(int, char**)
 {
     {
-        std::regex_traits<char> t1;
-        assert(t1.getloc().name() == "C");
-        std::regex_traits<wchar_t> t2;
-        assert(t2.getloc().name() == "C");
+        std::regex_traits<char> t;
+        assert(t.getloc().name() == "C");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    {
+        std::regex_traits<wchar_t> t;
+        assert(t.getloc().name() == "C");
+    }
+#endif
     {
         std::locale::global(std::locale(LOCALE_en_US_UTF_8));
-        std::regex_traits<char> t1;
-        assert(t1.getloc().name() == LOCALE_en_US_UTF_8);
-        std::regex_traits<wchar_t> t2;
-        assert(t2.getloc().name() == LOCALE_en_US_UTF_8);
+        std::regex_traits<char> t;
+        assert(t.getloc().name() == LOCALE_en_US_UTF_8);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    {
+        std::locale::global(std::locale(LOCALE_en_US_UTF_8));
+        std::regex_traits<wchar_t> t;
+        assert(t.getloc().name() == LOCALE_en_US_UTF_8);
+    }
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.traits/isctype.pass.cpp b/test/std/re/re.traits/isctype.pass.cpp
index 3563f8a..c6bba18 100644
--- a/test/std/re/re.traits/isctype.pass.cpp
+++ b/test/std/re/re.traits/isctype.pass.cpp
@@ -150,6 +150,8 @@
         assert(!t.isctype('-', t.lookup_classname(s.begin(), s.end())));
         assert(!t.isctype('@', t.lookup_classname(s.begin(), s.end())));
     }
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::regex_traits<wchar_t> t;
 
@@ -279,6 +281,7 @@
         assert(!t.isctype(L'-', t.lookup_classname(s.begin(), s.end())));
         assert(!t.isctype(L'@', t.lookup_classname(s.begin(), s.end())));
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/re/re.traits/length.pass.cpp b/test/std/re/re.traits/length.pass.cpp
index b0be164..e14df64 100644
--- a/test/std/re/re.traits/length.pass.cpp
+++ b/test/std/re/re.traits/length.pass.cpp
@@ -23,10 +23,12 @@
     assert(std::regex_traits<char>::length("12") == 2);
     assert(std::regex_traits<char>::length("123") == 3);
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     assert(std::regex_traits<wchar_t>::length(L"") == 0);
     assert(std::regex_traits<wchar_t>::length(L"1") == 1);
     assert(std::regex_traits<wchar_t>::length(L"12") == 2);
     assert(std::regex_traits<wchar_t>::length(L"123") == 3);
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.traits/lookup_classname.pass.cpp b/test/std/re/re.traits/lookup_classname.pass.cpp
index 31d93cb..ddf4663 100644
--- a/test/std/re/re.traits/lookup_classname.pass.cpp
+++ b/test/std/re/re.traits/lookup_classname.pass.cpp
@@ -158,6 +158,7 @@
     test("", std::ctype_base::mask());
     test("digits", std::ctype_base::mask());
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test(L"d", std::ctype_base::digit);
     test(L"D", std::ctype_base::digit);
     test(L"d", std::ctype_base::digit, true);
@@ -245,6 +246,7 @@
     test(L"dig", std::ctype_base::mask());
     test(L"", std::ctype_base::mask());
     test(L"digits", std::ctype_base::mask());
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.traits/lookup_collatename.pass.cpp b/test/std/re/re.traits/lookup_collatename.pass.cpp
index 27ff6ee..7258692 100644
--- a/test/std/re/re.traits/lookup_collatename.pass.cpp
+++ b/test/std/re/re.traits/lookup_collatename.pass.cpp
@@ -117,6 +117,7 @@
     test("ch", std::string("ch"));
     std::locale::global(std::locale("C"));
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test(L"NUL", std::wstring(L"\x00", 1));
     test(L"alert", std::wstring(L"\x07"));
     test(L"backspace", std::wstring(L"\x08"));
@@ -192,6 +193,7 @@
     std::locale::global(std::locale(LOCALE_cs_CZ_ISO8859_2));
     test(L"ch", std::wstring(L"ch"));
     std::locale::global(std::locale("C"));
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/re/re.traits/transform.pass.cpp b/test/std/re/re.traits/transform.pass.cpp
index cbc5eaa..80cd3f0 100644
--- a/test/std/re/re.traits/transform.pass.cpp
+++ b/test/std/re/re.traits/transform.pass.cpp
@@ -35,6 +35,7 @@
         t.imbue(std::locale(LOCALE_cs_CZ_ISO8859_2));
         assert(t.transform(F(a), F(a+1)) < t.transform(F(B), F(B+1)));
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::regex_traits<wchar_t> t;
         const wchar_t a[] = L"a";
@@ -44,6 +45,7 @@
         t.imbue(std::locale(LOCALE_cs_CZ_ISO8859_2));
         assert(t.transform(F(a), F(a+1)) < t.transform(F(B), F(B+1)));
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.traits/transform_primary.pass.cpp b/test/std/re/re.traits/transform_primary.pass.cpp
index 3b1be1d..4f793aa 100644
--- a/test/std/re/re.traits/transform_primary.pass.cpp
+++ b/test/std/re/re.traits/transform_primary.pass.cpp
@@ -39,6 +39,7 @@
         assert(t.transform_primary(F(A), F(A+1)) ==
                t.transform_primary(F(Aacute), F(Aacute+1)));
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::regex_traits<wchar_t> t;
         const wchar_t A[] = L"A";
@@ -50,6 +51,7 @@
         assert(t.transform_primary(F(A), F(A+1)) ==
                t.transform_primary(F(Aacute), F(Aacute+1)));
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.traits/translate.pass.cpp b/test/std/re/re.traits/translate.pass.cpp
index e9e32e9..a3e5978 100644
--- a/test/std/re/re.traits/translate.pass.cpp
+++ b/test/std/re/re.traits/translate.pass.cpp
@@ -24,12 +24,14 @@
         assert(t.translate('B') == 'B');
         assert(t.translate('c') == 'c');
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::regex_traits<wchar_t> t;
         assert(t.translate(L'a') == L'a');
         assert(t.translate(L'B') == L'B');
         assert(t.translate(L'c') == L'c');
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.traits/translate_nocase.pass.cpp b/test/std/re/re.traits/translate_nocase.pass.cpp
index 47f521d..d7eabc9 100644
--- a/test/std/re/re.traits/translate_nocase.pass.cpp
+++ b/test/std/re/re.traits/translate_nocase.pass.cpp
@@ -40,6 +40,7 @@
         assert(t.translate_nocase('a') == 'a');
         assert(t.translate_nocase('1') == '1');
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::regex_traits<wchar_t> t;
         assert(t.translate_nocase(L' ') == L' ');
@@ -60,6 +61,7 @@
         assert(t.translate_nocase(L'\xDA') == L'\xFA');
         assert(t.translate_nocase(L'\xFA') == L'\xFA');
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.traits/types.pass.cpp b/test/std/re/re.traits/types.pass.cpp
index 5816cb2..f15a647 100644
--- a/test/std/re/re.traits/types.pass.cpp
+++ b/test/std/re/re.traits/types.pass.cpp
@@ -25,9 +25,11 @@
     static_assert((std::is_same<std::regex_traits<char>::char_type, char>::value), "");
     static_assert((std::is_same<std::regex_traits<char>::string_type, std::string>::value), "");
     static_assert((std::is_same<std::regex_traits<char>::locale_type, std::locale>::value), "");
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     static_assert((std::is_same<std::regex_traits<wchar_t>::char_type, wchar_t>::value), "");
     static_assert((std::is_same<std::regex_traits<wchar_t>::string_type, std::wstring>::value), "");
     static_assert((std::is_same<std::regex_traits<wchar_t>::locale_type, std::locale>::value), "");
+#endif
 
   return 0;
 }
diff --git a/test/std/re/re.traits/value.pass.cpp b/test/std/re/re.traits/value.pass.cpp
index b7ca1fb..d4b7b0a 100644
--- a/test/std/re/re.traits/value.pass.cpp
+++ b/test/std/re/re.traits/value.pass.cpp
@@ -70,6 +70,7 @@
             assert(t.value(char(c), 16) == -1);
         }
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::regex_traits<wchar_t> t;
 
@@ -122,6 +123,7 @@
             assert(t.value(c, 16) == -1);
         }
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/strings/basic.string.hash/enabled_hashes.pass.cpp b/test/std/strings/basic.string.hash/enabled_hashes.pass.cpp
index 0935b89..67e22ea 100644
--- a/test/std/strings/basic.string.hash/enabled_hashes.pass.cpp
+++ b/test/std/strings/basic.string.hash/enabled_hashes.pass.cpp
@@ -23,7 +23,9 @@
   test_library_hash_specializations_available();
   {
     test_hash_enabled_for_type<std::string>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test_hash_enabled_for_type<std::wstring>();
+#endif
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     test_hash_enabled_for_type<std::u8string>();
 #endif
diff --git a/test/std/strings/basic.string.hash/strings.pass.cpp b/test/std/strings/basic.string.hash/strings.pass.cpp
index dbed700..9f7299b 100644
--- a/test/std/strings/basic.string.hash/strings.pass.cpp
+++ b/test/std/strings/basic.string.hash/strings.pass.cpp
@@ -50,7 +50,9 @@
     test<std::u16string>();
     test<std::u32string>();
 #endif
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<std::wstring>();
+#endif
 
   return 0;
 }
diff --git a/test/std/strings/basic.string.literals/literal.pass.cpp b/test/std/strings/basic.string.literals/literal.pass.cpp
index d8274bc..6d48e74 100644
--- a/test/std/strings/basic.string.literals/literal.pass.cpp
+++ b/test/std/strings/basic.string.literals/literal.pass.cpp
@@ -25,31 +25,41 @@
 
         ASSERT_SAME_TYPE(decltype(  "Hi"s), std::string);
         ASSERT_SAME_TYPE(decltype(u8"Hi"s), u8string);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         ASSERT_SAME_TYPE(decltype( L"Hi"s), std::wstring);
+#endif
         ASSERT_SAME_TYPE(decltype( u"Hi"s), std::u16string);
         ASSERT_SAME_TYPE(decltype( U"Hi"s), std::u32string);
 
         std::string foo;
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         std::wstring Lfoo;
+#endif
         u8string u8foo;
         std::u16string ufoo;
         std::u32string Ufoo;
 
         foo   =   ""s;     assert(  foo.size() == 0);
         u8foo = u8""s;     assert(u8foo.size() == 0);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         Lfoo  =  L""s;     assert( Lfoo.size() == 0);
+#endif
         ufoo  =  u""s;     assert( ufoo.size() == 0);
         Ufoo  =  U""s;     assert( Ufoo.size() == 0);
 
         foo   =   " "s;    assert(  foo.size() == 1);
         u8foo = u8" "s;    assert(u8foo.size() == 1);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         Lfoo  =  L" "s;    assert( Lfoo.size() == 1);
+#endif
         ufoo  =  u" "s;    assert( ufoo.size() == 1);
         Ufoo  =  U" "s;    assert( Ufoo.size() == 1);
 
         foo   =   "ABC"s;     assert(  foo ==   "ABC");   assert(  foo == std::string   (  "ABC"));
         u8foo = u8"ABC"s;     assert(u8foo == u8"ABC");   assert(u8foo == u8string      (u8"ABC"));
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         Lfoo  =  L"ABC"s;     assert( Lfoo ==  L"ABC");   assert( Lfoo == std::wstring  ( L"ABC"));
+#endif
         ufoo  =  u"ABC"s;     assert( ufoo ==  u"ABC");   assert( ufoo == std::u16string( u"ABC"));
         Ufoo  =  U"ABC"s;     assert( Ufoo ==  U"ABC");   assert( Ufoo == std::u32string( U"ABC"));
     }
diff --git a/test/std/strings/basic.string/string.cons/dtor_noexcept.pass.cpp b/test/std/strings/basic.string/string.cons/dtor_noexcept.pass.cpp
index 31afc70..83d2a92 100644
--- a/test/std/strings/basic.string/string.cons/dtor_noexcept.pass.cpp
+++ b/test/std/strings/basic.string/string.cons/dtor_noexcept.pass.cpp
@@ -30,7 +30,9 @@
 // Test that it's possible to take the address of basic_string's destructors
 // by creating globals which will register their destructors with cxa_atexit.
 std::string s;
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 std::wstring ws;
+#endif
 
 int main(int, char**)
 {
diff --git a/test/std/strings/basic.string/string.cons/implicit_deduction_guides.pass.cpp b/test/std/strings/basic.string/string.cons/implicit_deduction_guides.pass.cpp
index e7dd236..ec48740 100644
--- a/test/std/strings/basic.string/string.cons/implicit_deduction_guides.pass.cpp
+++ b/test/std/strings/basic.string/string.cons/implicit_deduction_guides.pass.cpp
@@ -62,18 +62,22 @@
     ASSERT_SAME_TYPE(decltype(s), std::string);
     assert(s == "aaaaaa");
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     std::basic_string w(2ull, L'b');
     ASSERT_SAME_TYPE(decltype(w), std::wstring);
     assert(w == L"bb");
+#endif
   }
   { // Testing (3) w/ allocator
     std::basic_string s(6ull, 'a', test_allocator<char>{});
     ASSERT_SAME_TYPE(decltype(s), BStr<char,test_allocator<char>>);
     assert(s == "aaaaaa");
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     std::basic_string w(2ull, L'b', test_allocator<wchar_t>{});
     ASSERT_SAME_TYPE(decltype(w), BStr<wchar_t, test_allocator<wchar_t>>);
     assert(w == L"bb");
+#endif
   }
   { // Testing (4) w/o allocator
     const std::string sin("abc");
@@ -81,6 +85,7 @@
     ASSERT_SAME_TYPE(decltype(s), std::string);
     assert(s == "bc");
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     using WStr = std::basic_string<wchar_t,
                                   constexpr_char_traits<wchar_t>,
                                   test_allocator<wchar_t>>;
@@ -88,6 +93,7 @@
     std::basic_string w(win, (TestSizeT)3);
     ASSERT_SAME_TYPE(decltype(w), WStr);
     assert(w == L"def");
+#endif
   }
   { // Testing (4) w/ allocator
     const std::string sin("abc");
@@ -95,6 +101,7 @@
     ASSERT_SAME_TYPE(decltype(s), std::string);
     assert(s == "bc");
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     using WStr = std::basic_string<wchar_t,
                                   constexpr_char_traits<wchar_t>,
                                   test_allocator<wchar_t>>;
@@ -102,6 +109,7 @@
     std::basic_string w(win, (TestSizeT)3, test_allocator<wchar_t>{});
     ASSERT_SAME_TYPE(decltype(w), WStr);
     assert(w == L"def");
+#endif
   }
   { // Testing (5) w/o allocator
     const std::string sin("abc");
@@ -109,6 +117,7 @@
     ASSERT_SAME_TYPE(decltype(s), std::string);
     assert(s == "bc");
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     using WStr = std::basic_string<wchar_t,
                                   constexpr_char_traits<wchar_t>,
                                   test_allocator<wchar_t>>;
@@ -116,6 +125,7 @@
     std::basic_string w(win, (TestSizeT)2, (TestSizeT)3);
     ASSERT_SAME_TYPE(decltype(w), WStr);
     assert(w == L"cde");
+#endif
   }
   { // Testing (5) w/ allocator
     const std::string sin("abc");
@@ -123,6 +133,7 @@
     ASSERT_SAME_TYPE(decltype(s), std::string);
     assert(s == "bc");
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     using WStr = std::basic_string<wchar_t,
                                   constexpr_char_traits<wchar_t>,
                                   test_allocator<wchar_t>>;
@@ -130,48 +141,57 @@
     std::basic_string w(win, (TestSizeT)2, (TestSizeT)3, test_allocator<wchar_t>{});
     ASSERT_SAME_TYPE(decltype(w), WStr);
     assert(w == L"cde");
+#endif
   }
   { // Testing (6) w/o allocator
     std::basic_string s("abc", (size_t)2);
     ASSERT_SAME_TYPE(decltype(s), std::string);
     assert(s == "ab");
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     std::basic_string w(L"abcdef", (size_t)3);
     ASSERT_SAME_TYPE(decltype(w), std::wstring);
     assert(w == L"abc");
+#endif
   }
   { // Testing (6) w/ allocator
     std::basic_string s("abc", (size_t)2, std::allocator<char>{});
     ASSERT_SAME_TYPE(decltype(s), std::string);
     assert(s == "ab");
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     using WStr = std::basic_string<wchar_t,
                                   std::char_traits<wchar_t>,
                                   test_allocator<wchar_t>>;
     std::basic_string w(L"abcdef", (TestSizeT)3, test_allocator<wchar_t>{});
     ASSERT_SAME_TYPE(decltype(w), WStr);
     assert(w == L"abc");
+#endif
   }
   { // Testing (7) w/o allocator
     std::basic_string s("abc");
     ASSERT_SAME_TYPE(decltype(s), std::string);
     assert(s == "abc");
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     std::basic_string w(L"abcdef");
     ASSERT_SAME_TYPE(decltype(w), std::wstring);
     assert(w == L"abcdef");
+#endif
   }
   { // Testing (7) w/ allocator
     std::basic_string s("abc", std::allocator<char>{});
     ASSERT_SAME_TYPE(decltype(s), std::string);
     assert(s == "abc");
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     using WStr = std::basic_string<wchar_t,
                                   std::char_traits<wchar_t>,
                                   test_allocator<wchar_t>>;
     std::basic_string w(L"abcdef", test_allocator<wchar_t>{});
     ASSERT_SAME_TYPE(decltype(w), WStr);
     assert(w == L"abcdef");
+#endif
   }
   { // (8) w/o allocator
     using It = cpp17_input_iterator<const char*>;
@@ -181,12 +201,24 @@
     assert(s == "abc");
   }
   { // (8) w/ allocator
-    using ExpectW = std::basic_string<wchar_t, std::char_traits<wchar_t>, test_allocator<wchar_t>>;
-    using It = cpp17_input_iterator<const wchar_t*>;
-    const wchar_t* input = L"abcdef";
-    std::basic_string s(It(input), It(input + 3), test_allocator<wchar_t>{});
-    ASSERT_SAME_TYPE(decltype(s), ExpectW);
-    assert(s == L"abc");
+    {
+      using Expect = std::basic_string<char, std::char_traits<char>, test_allocator<char>>;
+      using It = cpp17_input_iterator<const char*>;
+      const char* input = "abcdef";
+      std::basic_string s(It(input), It(input + 3), test_allocator<char>{});
+      ASSERT_SAME_TYPE(decltype(s), Expect);
+      assert(s == "abc");
+    }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    {
+      using ExpectW = std::basic_string<wchar_t, std::char_traits<wchar_t>, test_allocator<wchar_t>>;
+      using It = cpp17_input_iterator<const wchar_t*>;
+      const wchar_t* input = L"abcdef";
+      std::basic_string s(It(input), It(input + 3), test_allocator<wchar_t>{});
+      ASSERT_SAME_TYPE(decltype(s), ExpectW);
+      assert(s == L"abc");
+    }
+#endif
   }
   { // Testing (9)
     const std::string sin("abc");
@@ -194,6 +226,7 @@
     ASSERT_SAME_TYPE(decltype(s), std::string);
     assert(s == "abc");
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     using WStr = std::basic_string<wchar_t,
                                   constexpr_char_traits<wchar_t>,
                                   test_allocator<wchar_t>>;
@@ -201,6 +234,7 @@
     std::basic_string w(win);
     ASSERT_SAME_TYPE(decltype(w), WStr);
     assert(w == L"abcdef");
+#endif
   }
   { // Testing (10)
     const std::string sin("abc");
@@ -208,6 +242,7 @@
     ASSERT_SAME_TYPE(decltype(s), std::string);
     assert(s == "abc");
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     using WStr = std::basic_string<wchar_t,
                                   constexpr_char_traits<wchar_t>,
                                   test_allocator<wchar_t>>;
@@ -215,6 +250,7 @@
     std::basic_string w(win, test_allocator<wchar_t>{});
     ASSERT_SAME_TYPE(decltype(w), WStr);
     assert(w == L"abcdef");
+#endif
   }
   { // Testing (11)
     std::string sin("abc");
@@ -222,6 +258,7 @@
     ASSERT_SAME_TYPE(decltype(s), std::string);
     assert(s == "abc");
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     using WStr = std::basic_string<wchar_t,
                                   constexpr_char_traits<wchar_t>,
                                   test_allocator<wchar_t>>;
@@ -229,6 +266,7 @@
     std::basic_string w(std::move(win));
     ASSERT_SAME_TYPE(decltype(w), WStr);
     assert(w == L"abcdef");
+#endif
   }
   { // Testing (12)
     std::string sin("abc");
@@ -236,6 +274,7 @@
     ASSERT_SAME_TYPE(decltype(s), std::string);
     assert(s == "abc");
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     using WStr = std::basic_string<wchar_t,
                                   constexpr_char_traits<wchar_t>,
                                   test_allocator<wchar_t>>;
@@ -243,24 +282,29 @@
     std::basic_string w(std::move(win), test_allocator<wchar_t>{});
     ASSERT_SAME_TYPE(decltype(w), WStr);
     assert(w == L"abcdef");
+#endif
   }
   { // Testing (13) w/o allocator
     std::basic_string s({'a', 'b', 'c'});
     ASSERT_SAME_TYPE(decltype(s), std::string);
     assert(s == "abc");
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     std::basic_string w({L'a', L'b', L'c'});
     ASSERT_SAME_TYPE(decltype(w), std::wstring);
     assert(w == L"abc");
+#endif
   }
   { // Testing (13) w/ allocator
     std::basic_string s({'a', 'b', 'c'}, test_allocator<char>{});
     ASSERT_SAME_TYPE(decltype(s), BStr<char, test_allocator<char>>);
     assert(s == "abc");
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     std::basic_string w({L'a', L'b', L'c'}, test_allocator<wchar_t>{});
     ASSERT_SAME_TYPE(decltype(w), BStr<wchar_t, test_allocator<wchar_t>>);
     assert(w == L"abc");
+#endif
   }
   { // Testing (14) w/o allocator
     std::string_view sv("abc");
@@ -268,11 +312,13 @@
     ASSERT_SAME_TYPE(decltype(s), std::string);
     assert(s == "abc");
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     using Expect = std::basic_string<wchar_t, constexpr_char_traits<wchar_t>>;
     std::basic_string_view<wchar_t, constexpr_char_traits<wchar_t>> BSV(L"abcdef");
     std::basic_string w(BSV);
     ASSERT_SAME_TYPE(decltype(w), Expect);
     assert(w == L"abcdef");
+#endif
   }
   { // Testing (14) w/ allocator
     using ExpectS = std::basic_string<char, std::char_traits<char>, test_allocator<char>>;
@@ -281,12 +327,14 @@
     ASSERT_SAME_TYPE(decltype(s), ExpectS);
     assert(s == "abc");
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     using ExpectW = std::basic_string<wchar_t, constexpr_char_traits<wchar_t>,
                                       test_allocator<wchar_t>>;
     std::basic_string_view<wchar_t, constexpr_char_traits<wchar_t>> BSV(L"abcdef");
     std::basic_string w(BSV, test_allocator<wchar_t>{});
     ASSERT_SAME_TYPE(decltype(w), ExpectW);
     assert(w == L"abcdef");
+#endif
   }
   { // Testing (15) w/o allocator
     std::string s0("abc");
@@ -294,10 +342,12 @@
     ASSERT_SAME_TYPE(decltype(s), std::string);
     assert(s == "b");
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     std::wstring w0(L"abcdef");
     std::basic_string w(w0, 2, 2);
     ASSERT_SAME_TYPE(decltype(w), std::wstring);
     assert(w == L"cd");
+#endif
   }
   { // Testing (15) w/ allocator
     using ExpectS = std::basic_string<char, std::char_traits<char>, test_allocator<char>>;
@@ -306,11 +356,13 @@
     ASSERT_SAME_TYPE(decltype(s), ExpectS);
     assert(s == "b");
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     using ExpectW = std::basic_string<wchar_t, std::char_traits<wchar_t>, test_allocator<wchar_t>>;
     ExpectW w0(L"abcdef");
     std::basic_string w(w0, 2, 2, test_allocator<wchar_t>{6});
     ASSERT_SAME_TYPE(decltype(w), ExpectW);
     assert(w == L"cd");
+#endif
   }
 
   return 0;
diff --git a/test/std/strings/basic.string/string.cons/initializer_list.pass.cpp b/test/std/strings/basic.string/string.cons/initializer_list.pass.cpp
index aeb0fcf..92f0d44 100644
--- a/test/std/strings/basic.string/string.cons/initializer_list.pass.cpp
+++ b/test/std/strings/basic.string/string.cons/initializer_list.pass.cpp
@@ -25,22 +25,26 @@
         std::string s = {'a', 'b', 'c'};
         assert(s == "abc");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wstring s;
         s = {L'a', L'b', L'c'};
         assert(s == L"abc");
     }
+#endif
     {
         typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
         S s = {'a', 'b', 'c'};
         assert(s == "abc");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef std::basic_string<wchar_t, std::char_traits<wchar_t>, min_allocator<wchar_t>> S;
         S s;
         s = {L'a', L'b', L'c'};
         assert(s == L"abc");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/strings/basic.string/string.cons/string_view_deduction.pass.cpp b/test/std/strings/basic.string/string.cons/string_view_deduction.pass.cpp
index 46b3b8f..a9b48d6 100644
--- a/test/std/strings/basic.string/string.cons/string_view_deduction.pass.cpp
+++ b/test/std/strings/basic.string/string.cons/string_view_deduction.pass.cpp
@@ -59,6 +59,7 @@
     assert(s1.size() == sv.size());
     assert(s1.compare(0, s1.size(), sv.data(), s1.size()) == 0);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
     std::wstring_view sv = L"12345678901234";
     std::basic_string s1{sv, test_allocator<wchar_t>{}};
@@ -69,6 +70,7 @@
     assert(s1.size() == sv.size());
     assert(s1.compare(0, s1.size(), sv.data(), s1.size()) == 0);
     }
+#endif
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     {
     std::u8string_view sv = u8"12345678901234";
diff --git a/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.pass.cpp b/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.pass.cpp
index 69e94ad..305194d 100644
--- a/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.pass.cpp
+++ b/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.pass.cpp
@@ -63,6 +63,7 @@
     assert(s1.size() == 4);
     assert(s1.compare(0, s1.size(), sv.data(), s1.size()) == 0);
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
     std::wstring_view sv = L"12345678901234";
     std::basic_string s1{sv, 0, 4, test_allocator<wchar_t>{}};
@@ -73,6 +74,7 @@
     assert(s1.size() == 4);
     assert(s1.compare(0, s1.size(), sv.data(), s1.size()) == 0);
     }
+#endif
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     {
     std::u8string_view sv = u8"12345678901234";
diff --git a/test/std/strings/basic.string/string.iterators/iterators.pass.cpp b/test/std/strings/basic.string/string.iterators/iterators.pass.cpp
index 4ca75d2..c7c1eb2 100644
--- a/test/std/strings/basic.string/string.iterators/iterators.pass.cpp
+++ b/test/std/strings/basic.string/string.iterators/iterators.pass.cpp
@@ -54,7 +54,9 @@
 int main(int, char**)
 {
     test<std::string>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<std::wstring>();
+#endif
 
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     test<std::u8string>();
diff --git a/test/std/strings/basic.string/string.nonmembers/string.io/get_line.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string.io/get_line.pass.cpp
index 6069f8e..b1fdf57 100644
--- a/test/std/strings/basic.string/string.nonmembers/string.io/get_line.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string.io/get_line.pass.cpp
@@ -35,6 +35,7 @@
         assert(in.eof());
         assert(s == "   ghij");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wistringstream in(L" abc\n  def\n   ghij");
         std::wstring s(L"initial text");
@@ -48,6 +49,7 @@
         assert(in.eof());
         assert(s == L"   ghij");
     }
+#endif
 #if TEST_STD_VER >= 11
     {
         typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
@@ -63,6 +65,7 @@
         assert(in.eof());
         assert(s == "   ghij");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef std::basic_string<wchar_t, std::char_traits<wchar_t>, min_allocator<wchar_t>> S;
         std::wistringstream in(L" abc\n  def\n   ghij");
@@ -77,7 +80,8 @@
         assert(in.eof());
         assert(s == L"   ghij");
     }
-#endif
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
+#endif // TEST_STD_VER >= 11
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         std::basic_stringbuf<char> sb("hello");
@@ -98,6 +102,7 @@
         assert(threw);
         assert(s == "hello");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::basic_stringbuf<wchar_t> sb(L"hello");
         std::basic_istream<wchar_t> is(&sb);
@@ -117,6 +122,7 @@
         assert(threw);
         assert(s == L"hello");
     }
+#endif
 
     {
         std::basic_stringbuf<char> sb;
@@ -137,6 +143,7 @@
         assert(threw);
         assert(s == "");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::basic_stringbuf<wchar_t> sb;
         std::basic_istream<wchar_t> is(&sb);
@@ -156,6 +163,7 @@
         assert(threw);
         assert(s == L"");
     }
+#endif
 #endif // TEST_HAS_NO_EXCEPTIONS
 
     return 0;
diff --git a/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim.pass.cpp
index d7d271b..c94e6c2 100644
--- a/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim.pass.cpp
@@ -38,6 +38,7 @@
         assert(in.eof());
         assert(s == "   ghij");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wistringstream in(L" abc*  def**   ghij");
         std::wstring s(L"initial text");
@@ -54,6 +55,7 @@
         assert(in.eof());
         assert(s == L"   ghij");
     }
+#endif
 #if TEST_STD_VER >= 11
     {
         typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
@@ -72,6 +74,7 @@
         assert(in.eof());
         assert(s == "   ghij");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef std::basic_string<wchar_t, std::char_traits<wchar_t>, min_allocator<wchar_t>> S;
         std::wistringstream in(L" abc*  def**   ghij");
@@ -89,7 +92,8 @@
         assert(in.eof());
         assert(s == L"   ghij");
     }
-#endif
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
+#endif // TEST_STD_VER >= 11
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         std::basic_stringbuf<char> sb("hello");
@@ -110,6 +114,7 @@
         assert(threw);
         assert(s == "hello");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::basic_stringbuf<wchar_t> sb(L"hello");
         std::basic_istream<wchar_t> is(&sb);
@@ -129,6 +134,7 @@
         assert(threw);
         assert(s == L"hello");
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::basic_stringbuf<char> sb;
         std::basic_istream<char> is(&sb);
@@ -148,6 +154,7 @@
         assert(threw);
         assert(s == "");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::basic_stringbuf<wchar_t> sb;
         std::basic_istream<wchar_t> is(&sb);
@@ -167,6 +174,7 @@
         assert(threw);
         assert(s == L"");
     }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 #endif // TEST_HAS_NO_EXCEPTIONS
 
     return 0;
diff --git a/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim_rv.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim_rv.pass.cpp
index d2e5ab5..077a1a8 100644
--- a/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim_rv.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim_rv.pass.cpp
@@ -27,23 +27,27 @@
         getline(std::istringstream(" abc*  def*   ghij"), s, '*');
         assert(s == " abc");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wstring s(L"initial text");
         getline(std::wistringstream(L" abc*  def*   ghij"), s, L'*');
         assert(s == L" abc");
     }
+#endif
     {
         typedef std::basic_string<char, std::char_traits<char>, min_allocator<char> > S;
         S s("initial text");
         getline(std::istringstream(" abc*  def*   ghij"), s, '*');
         assert(s == " abc");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef std::basic_string<wchar_t, std::char_traits<wchar_t>, min_allocator<wchar_t> > S;
         S s(L"initial text");
         getline(std::wistringstream(L" abc*  def*   ghij"), s, L'*');
         assert(s == L" abc");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/strings/basic.string/string.nonmembers/string.io/get_line_rv.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string.io/get_line_rv.pass.cpp
index 3fb35cc..aef9047 100644
--- a/test/std/strings/basic.string/string.nonmembers/string.io/get_line_rv.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string.io/get_line_rv.pass.cpp
@@ -27,23 +27,27 @@
         getline(std::istringstream(" abc\n  def\n   ghij"), s);
         assert(s == " abc");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wstring s(L"initial text");
         getline(std::wistringstream(L" abc\n  def\n   ghij"), s);
         assert(s == L" abc");
     }
+#endif
     {
         typedef std::basic_string<char, std::char_traits<char>, min_allocator<char> > S;
         S s("initial text");
         getline(std::istringstream(" abc\n  def\n   ghij"), s);
         assert(s == " abc");
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef std::basic_string<wchar_t, std::char_traits<wchar_t>, min_allocator<wchar_t> > S;
         S s(L"initial text");
         getline(std::wistringstream(L" abc\n  def\n   ghij"), s);
         assert(s == L" abc");
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/strings/basic.string/string.nonmembers/string.io/stream_extract.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string.io/stream_extract.pass.cpp
index 92061e2..686b7a9 100644
--- a/test/std/strings/basic.string/string.nonmembers/string.io/stream_extract.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string.io/stream_extract.pass.cpp
@@ -44,6 +44,7 @@
         in >> s;
         assert(in.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wistringstream in(L"a bc defghij");
         std::wstring s(L"initial text");
@@ -66,6 +67,7 @@
         in >> s;
         assert(in.fail());
     }
+#endif
 #ifndef TEST_HAS_NO_EXCEPTIONS
     {
         std::stringbuf sb;
@@ -128,6 +130,7 @@
         in >> s;
         assert(in.fail());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef std::basic_string<wchar_t, std::char_traits<wchar_t>, min_allocator<wchar_t>> S;
         std::wistringstream in(L"a bc defghij");
@@ -151,7 +154,8 @@
         in >> s;
         assert(in.fail());
     }
-#endif
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
+#endif // TEST_STD_VER >= 11
 
   return 0;
 }
diff --git a/test/std/strings/basic.string/string.nonmembers/string.io/stream_insert.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string.io/stream_insert.pass.cpp
index b60fc33..d2b2890 100644
--- a/test/std/strings/basic.string/string.nonmembers/string.io/stream_insert.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string.io/stream_insert.pass.cpp
@@ -37,6 +37,7 @@
         assert(out.good());
         assert("   " + s == out.str());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wostringstream out;
         std::wstring s(L"some text");
@@ -52,6 +53,7 @@
         assert(out.good());
         assert(L"   " + s == out.str());
     }
+#endif
 #if TEST_STD_VER >= 11
     {
         typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
@@ -70,6 +72,7 @@
         assert(out.good());
         assert("   " + s == out.str());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         typedef std::basic_string<wchar_t, std::char_traits<wchar_t>, min_allocator<wchar_t>> S;
         std::basic_ostringstream<S::value_type, S::traits_type, S::allocator_type> out;
@@ -87,7 +90,8 @@
         assert(out.good());
         assert(L"   " + s == out.str());
     }
-#endif
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
+#endif // TEST_STD_VER >= 11
 
   return 0;
 }
diff --git a/test/std/strings/c.strings/cwchar.pass.cpp b/test/std/strings/c.strings/cwchar.pass.cpp
index 1d2742b..1ac1f28 100644
--- a/test/std/strings/c.strings/cwchar.pass.cpp
+++ b/test/std/strings/c.strings/cwchar.pass.cpp
@@ -8,6 +8,8 @@
 
 // <cwchar>
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <cwchar>
 #include <ctime>
 #include <cstdarg>
diff --git a/test/std/strings/c.strings/cwctype.pass.cpp b/test/std/strings/c.strings/cwctype.pass.cpp
index 99027d9..294b8de 100644
--- a/test/std/strings/c.strings/cwctype.pass.cpp
+++ b/test/std/strings/c.strings/cwctype.pass.cpp
@@ -8,6 +8,8 @@
 
 // <cwctype>
 
+// XFAIL: libcpp-has-no-wide-characters
+
 #include <cwctype>
 #include <type_traits>
 
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/assign2.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/assign2.pass.cpp
index 25e4270..8ef8cfe 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/assign2.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/assign2.pass.cpp
@@ -13,6 +13,8 @@
 // static void assign(char_type& c1, const char_type& c2);
 // constexpr in C++17
 
+// UNSUPPORTED: libcpp-has-no-wide-characters
+
 #include <string>
 #include <cassert>
 
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/assign3.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/assign3.pass.cpp
index e1b2945..8c58696 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/assign3.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/assign3.pass.cpp
@@ -12,6 +12,8 @@
 
 // static char_type* assign(char_type* s, size_t n, char_type a);
 
+// UNSUPPORTED: libcpp-has-no-wide-characters
+
 #include <string>
 #include <cassert>
 
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/compare.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/compare.pass.cpp
index 1c2e119..493e3d0 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/compare.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/compare.pass.cpp
@@ -13,6 +13,8 @@
 // static int compare(const char_type* s1, const char_type* s2, size_t n);
 // constexpr in C++17
 
+// UNSUPPORTED: libcpp-has-no-wide-characters
+
 #include <string>
 #include <cassert>
 
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/copy.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/copy.pass.cpp
index 3191f61..02fdb81 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/copy.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/copy.pass.cpp
@@ -12,6 +12,8 @@
 
 // static char_type* copy(char_type* s1, const char_type* s2, size_t n);
 
+// UNSUPPORTED: libcpp-has-no-wide-characters
+
 #include <string>
 #include <cassert>
 
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/eof.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/eof.pass.cpp
index cc4f1ea..a1f9be8 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/eof.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/eof.pass.cpp
@@ -12,6 +12,8 @@
 
 // static constexpr int_type eof();
 
+// UNSUPPORTED: libcpp-has-no-wide-characters
+
 #include <string>
 #include <cassert>
 
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/eq.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/eq.pass.cpp
index 400c293..51b31d9 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/eq.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/eq.pass.cpp
@@ -12,6 +12,8 @@
 
 // static constexpr bool eq(char_type c1, char_type c2);
 
+// UNSUPPORTED: libcpp-has-no-wide-characters
+
 #include <string>
 #include <cassert>
 
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/eq_int_type.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/eq_int_type.pass.cpp
index fbb1709..f5a5cc0 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/eq_int_type.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/eq_int_type.pass.cpp
@@ -12,6 +12,8 @@
 
 // static constexpr bool eq_int_type(int_type c1, int_type c2);
 
+// UNSUPPORTED: libcpp-has-no-wide-characters
+
 #include <string>
 #include <cassert>
 
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/find.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/find.pass.cpp
index 78a9ad5..11e0f8e 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/find.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/find.pass.cpp
@@ -13,6 +13,8 @@
 // static const char_type* find(const char_type* s, size_t n, const char_type& a);
 // constexpr in C++17
 
+// UNSUPPORTED: libcpp-has-no-wide-characters
+
 #include <string>
 #include <cassert>
 
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/length.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/length.pass.cpp
index 7421892..12ebe97 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/length.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/length.pass.cpp
@@ -13,6 +13,8 @@
 // static size_t length(const char_type* s);
 // constexpr in C++17
 
+// UNSUPPORTED: libcpp-has-no-wide-characters
+
 #include <string>
 #include <cassert>
 
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/lt.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/lt.pass.cpp
index 5664692..2bd23e9 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/lt.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/lt.pass.cpp
@@ -12,6 +12,8 @@
 
 // static constexpr bool lt(char_type c1, char_type c2);
 
+// UNSUPPORTED: libcpp-has-no-wide-characters
+
 #include <string>
 #include <cassert>
 
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/move.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/move.pass.cpp
index 2e27535..d096633 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/move.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/move.pass.cpp
@@ -12,6 +12,8 @@
 
 // static char_type* move(char_type* s1, const char_type* s2, size_t n);
 
+// UNSUPPORTED: libcpp-has-no-wide-characters
+
 #include <string>
 #include <cassert>
 
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/not_eof.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/not_eof.pass.cpp
index 6ae2763..c20ba81 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/not_eof.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/not_eof.pass.cpp
@@ -12,6 +12,8 @@
 
 // static constexpr int_type not_eof(int_type c);
 
+// UNSUPPORTED: libcpp-has-no-wide-characters
+
 #include <string>
 #include <cassert>
 
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/to_char_type.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/to_char_type.pass.cpp
index 6d5ef11..cea9e46 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/to_char_type.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/to_char_type.pass.cpp
@@ -12,6 +12,8 @@
 
 // static constexpr char_type to_char_type(int_type c);
 
+// UNSUPPORTED: libcpp-has-no-wide-characters
+
 #include <string>
 #include <cassert>
 
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/to_int_type.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/to_int_type.pass.cpp
index 74f8e68..02cc92e 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/to_int_type.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/to_int_type.pass.cpp
@@ -12,6 +12,8 @@
 
 // static constexpr int_type to_int_type(char_type c);
 
+// UNSUPPORTED: libcpp-has-no-wide-characters
+
 #include <string>
 #include <cassert>
 
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/types.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/types.pass.cpp
index 810a142..165b766 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/types.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/types.pass.cpp
@@ -16,6 +16,8 @@
 // typedef streampos pos_type;
 // typedef mbstate_t state_type;
 
+// UNSUPPORTED: libcpp-has-no-wide-characters
+
 #include <string>
 #include <type_traits>
 
diff --git a/test/std/strings/string.classes/typedefs.pass.cpp b/test/std/strings/string.classes/typedefs.pass.cpp
index 55717e3..0369f25 100644
--- a/test/std/strings/string.classes/typedefs.pass.cpp
+++ b/test/std/strings/string.classes/typedefs.pass.cpp
@@ -25,7 +25,9 @@
 int main(int, char**)
 {
     static_assert((std::is_same<std::string, std::basic_string<char> >::value), "");
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     static_assert((std::is_same<std::wstring, std::basic_string<wchar_t> >::value), "");
+#endif
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     static_assert((std::is_same<std::u8string, std::basic_string<char8_t> >::value), "");
 #endif
diff --git a/test/std/strings/string.conversions/stod.pass.cpp b/test/std/strings/string.conversions/stod.pass.cpp
index d13b695..2bab34d 100644
--- a/test/std/strings/string.conversions/stod.pass.cpp
+++ b/test/std/strings/string.conversions/stod.pass.cpp
@@ -20,171 +20,140 @@
 
 int main(int, char**)
 {
-    assert(std::stod("0") == 0);
-    assert(std::stod(L"0") == 0);
-    assert(std::stod("-0") == 0);
-    assert(std::stod(L"-0") == 0);
-    assert(std::stod("-10") == -10);
-    assert(std::stod(L"-10.5") == -10.5);
-    assert(std::stod(" 10") == 10);
-    assert(std::stod(L" 10") == 10);
-    size_t idx = 0;
-    assert(std::stod("10g", &idx) == 10);
-    assert(idx == 2);
-    idx = 0;
-    assert(std::stod(L"10g", &idx) == 10);
-    assert(idx == 2);
+    // char
+    {
+        assert(std::stod("0") == 0);
+        assert(std::stod("-0") == 0);
+        assert(std::stod("-10") == -10);
+        assert(std::stod(" 10") == 10);
+        {
+            size_t idx = 0;
+            assert(std::stod("10g", &idx) == 10);
+            assert(idx == 2);
+        }
+        {
+            size_t idx = 0;
+            assert(std::stod("1.e60", &idx) == 1.e60);
+            assert(idx == 5);
+        }
+        {
+            size_t idx = 0;
+            assert(std::stod("INF", &idx) == INFINITY);
+            assert(idx == 3);
+        }
+        {
+            size_t idx = 0;
+            assert(std::isnan(std::stod("NAN", &idx)));
+            assert(idx == 3);
+        }
+
 #ifndef TEST_HAS_NO_EXCEPTIONS
-    try
-#endif
-    {
-        assert(std::stod("1.e60", &idx) == 1.e60);
-        assert(idx == 5);
+        {
+            size_t idx = 0;
+            try {
+                assert(std::stod("1.e360", &idx) == INFINITY);
+                assert(false);
+            } catch (const std::out_of_range&) {
+                assert(idx == 0);
+            }
+        }
+        {
+            size_t idx = 0;
+            try {
+                std::stod("", &idx);
+                assert(false);
+            } catch (const std::invalid_argument&) {
+                assert(idx == 0);
+            }
+        }
+        {
+            size_t idx = 0;
+            try {
+                std::stod("  - 8", &idx);
+                assert(false);
+            } catch (const std::invalid_argument&) {
+                assert(idx == 0);
+            }
+        }
+        {
+            size_t idx = 0;
+            try {
+                std::stod("a1", &idx);
+                assert(false);
+            } catch (const std::invalid_argument&) {
+                assert(idx == 0);
+            }
+        }
+#endif // TEST_HAS_NO_EXCEPTIONS
     }
+
+    // wchar_t
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    {
+        assert(std::stod(L"0") == 0);
+        assert(std::stod(L"-0") == 0);
+        assert(std::stod(L"-10.5") == -10.5);
+        assert(std::stod(L" 10") == 10);
+        {
+            size_t idx = 0;
+            assert(std::stod(L"10g", &idx) == 10);
+            assert(idx == 2);
+        }
+        {
+            size_t idx = 0;
+            assert(std::stod(L"1.e60", &idx) == 1.e60);
+            assert(idx == 5);
+        }
+        {
+            size_t idx = 0;
+            assert(std::stod(L"INF", &idx) == INFINITY);
+            assert(idx == 3);
+        }
+        {
+            size_t idx = 0;
+            assert(std::isnan(std::stod(L"NAN", &idx)));
+            assert(idx == 3);
+        }
 #ifndef TEST_HAS_NO_EXCEPTIONS
-    catch (const std::out_of_range&)
-    {
-        assert(false);
+        {
+            size_t idx = 0;
+            try {
+                assert(std::stod(L"1.e360", &idx) == INFINITY);
+                assert(false);
+            } catch (const std::out_of_range&) {
+                assert(idx == 0);
+            }
+        }
+        {
+            size_t idx = 0;
+            try {
+                std::stod(L"", &idx);
+                assert(false);
+            } catch (const std::invalid_argument&) {
+                assert(idx == 0);
+            }
+        }
+        {
+            size_t idx = 0;
+            try {
+                std::stod(L"  - 8", &idx);
+                assert(false);
+            } catch (const std::invalid_argument&) {
+                assert(idx == 0);
+            }
+        }
+        {
+            size_t idx = 0;
+            try {
+                std::stod(L"a1", &idx);
+                assert(false);
+            } catch (const std::invalid_argument&) {
+                assert(idx == 0);
+            }
+        }
+#endif // TEST_HAS_NO_EXCEPTIONS
     }
-    try
-#endif
-    {
-        assert(std::stod(L"1.e60", &idx) == 1.e60);
-        assert(idx == 5);
-    }
-#ifndef TEST_HAS_NO_EXCEPTIONS
-    catch (const std::out_of_range&)
-    {
-        assert(false);
-    }
-    idx = 0;
-    try
-    {
-        assert(std::stod("1.e360", &idx) == INFINITY);
-        assert(false);
-    }
-    catch (const std::out_of_range&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        assert(std::stod(L"1.e360", &idx) == INFINITY);
-        assert(false);
-    }
-    catch (const std::out_of_range&)
-    {
-        assert(idx == 0);
-    }
-    try
-#endif
-    {
-        assert(std::stod("INF", &idx) == INFINITY);
-        assert(idx == 3);
-    }
-#ifndef TEST_HAS_NO_EXCEPTIONS
-    catch (const std::out_of_range&)
-    {
-        assert(false);
-    }
-#endif
-    idx = 0;
-#ifndef TEST_HAS_NO_EXCEPTIONS
-    try
-#endif
-    {
-        assert(std::stod(L"INF", &idx) == INFINITY);
-        assert(idx == 3);
-    }
-#ifndef TEST_HAS_NO_EXCEPTIONS
-    catch (const std::out_of_range&)
-    {
-        assert(false);
-    }
-#endif
-    idx = 0;
-#ifndef TEST_HAS_NO_EXCEPTIONS
-    try
-#endif
-    {
-        assert(std::isnan(std::stod("NAN", &idx)));
-        assert(idx == 3);
-    }
-#ifndef TEST_HAS_NO_EXCEPTIONS
-    catch (const std::out_of_range&)
-    {
-        assert(false);
-    }
-#endif
-    idx = 0;
-#ifndef TEST_HAS_NO_EXCEPTIONS
-    try
-#endif
-    {
-        assert(std::isnan(std::stod(L"NAN", &idx)));
-        assert(idx == 3);
-    }
-#ifndef TEST_HAS_NO_EXCEPTIONS
-    catch (const std::out_of_range&)
-    {
-        assert(false);
-    }
-    idx = 0;
-    try
-    {
-        std::stod("", &idx);
-        assert(false);
-    }
-    catch (const std::invalid_argument&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        std::stod(L"", &idx);
-        assert(false);
-    }
-    catch (const std::invalid_argument&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        std::stod("  - 8", &idx);
-        assert(false);
-    }
-    catch (const std::invalid_argument&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        std::stod(L"  - 8", &idx);
-        assert(false);
-    }
-    catch (const std::invalid_argument&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        std::stod("a1", &idx);
-        assert(false);
-    }
-    catch (const std::invalid_argument&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        std::stod(L"a1", &idx);
-        assert(false);
-    }
-    catch (const std::invalid_argument&)
-    {
-        assert(idx == 0);
-    }
-#endif
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/strings/string.conversions/stof.pass.cpp b/test/std/strings/string.conversions/stof.pass.cpp
index 22dda0b..4f320ea 100644
--- a/test/std/strings/string.conversions/stof.pass.cpp
+++ b/test/std/strings/string.conversions/stof.pass.cpp
@@ -21,167 +21,140 @@
 int main(int, char**)
 {
     assert(std::stof("0") == 0);
-    assert(std::stof(L"0") == 0);
     assert(std::stof("-0") == 0);
-    assert(std::stof(L"-0") == 0);
     assert(std::stof("-10") == -10);
-    assert(std::stof(L"-10.5") == -10.5);
     assert(std::stof(" 10") == 10);
-    assert(std::stof(L" 10") == 10);
-    size_t idx = 0;
-    assert(std::stof("10g", &idx) == 10);
-    assert(idx == 2);
-    idx = 0;
-    assert(std::stof(L"10g", &idx) == 10);
-    assert(idx == 2);
-#ifndef TEST_HAS_NO_EXCEPTIONS
-    idx = 0;
-    try
     {
-        assert(std::stof("1.e60", &idx) == INFINITY);
-        assert(false);
+        size_t idx = 0;
+        assert(std::stof("10g", &idx) == 10);
+        assert(idx == 2);
     }
-    catch (const std::out_of_range&)
     {
-        assert(idx == 0);
-    }
-    try
-    {
-        assert(std::stof(L"1.e60", &idx) == INFINITY);
-        assert(false);
-    }
-    catch (const std::out_of_range&)
-    {
-        assert(idx == 0);
-    }
-    idx = 0;
-    try
-    {
-        assert(std::stof("1.e360", &idx) == INFINITY);
-        assert(false);
-    }
-    catch (const std::out_of_range&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        assert(std::stof(L"1.e360", &idx) == INFINITY);
-        assert(false);
-    }
-    catch (const std::out_of_range&)
-    {
-        assert(idx == 0);
-    }
-    try
-#endif
-    {
+        size_t idx = 0;
         assert(std::stof("INF", &idx) == INFINITY);
         assert(idx == 3);
     }
-#ifndef TEST_HAS_NO_EXCEPTIONS
-    catch (const std::out_of_range&)
     {
-        assert(false);
-    }
-#endif
-    idx = 0;
-#ifndef TEST_HAS_NO_EXCEPTIONS
-    try
-#endif
-    {
-        assert(std::stof(L"INF", &idx) == INFINITY);
-        assert(idx == 3);
-    }
-#ifndef TEST_HAS_NO_EXCEPTIONS
-    catch (const std::out_of_range&)
-    {
-        assert(false);
-    }
-#endif
-    idx = 0;
-#ifndef TEST_HAS_NO_EXCEPTIONS
-    try
-#endif
-    {
+        size_t idx = 0;
         assert(std::isnan(std::stof("NAN", &idx)));
         assert(idx == 3);
     }
 #ifndef TEST_HAS_NO_EXCEPTIONS
-    catch (const std::out_of_range&)
     {
-        assert(false);
+        size_t idx = 0;
+        try {
+            assert(std::stof("1.e60", &idx) == INFINITY);
+            assert(false);
+        } catch (const std::out_of_range&) {
+            assert(idx == 0);
+        }
     }
-#endif
-    idx = 0;
-#ifndef TEST_HAS_NO_EXCEPTIONS
-    try
-#endif
     {
+        size_t idx = 0;
+        try {
+            assert(std::stof("1.e360", &idx) == INFINITY);
+            assert(false);
+        } catch (const std::out_of_range&) {
+            assert(idx == 0);
+        }
+    }
+    {
+        size_t idx = 0;
+        try {
+            std::stof("", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
+    }
+    {
+        size_t idx = 0;
+        try {
+            std::stof("  - 8", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
+    }
+    {
+        size_t idx = 0;
+        try {
+            std::stof("a1", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
+    }
+#endif // TEST_HAS_NO_EXCEPTIONS
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    assert(std::stof(L"0") == 0);
+    assert(std::stof(L"-0") == 0);
+    assert(std::stof(L"-10.5") == -10.5);
+    assert(std::stof(L" 10") == 10);
+    {
+        size_t idx = 0;
+        assert(std::stof(L"10g", &idx) == 10);
+        assert(idx == 2);
+    }
+    {
+        size_t idx = 0;
+        assert(std::stof(L"INF", &idx) == INFINITY);
+        assert(idx == 3);
+    }
+    {
+        size_t idx = 0;
         assert(std::isnan(std::stof(L"NAN", &idx)));
         assert(idx == 3);
     }
 #ifndef TEST_HAS_NO_EXCEPTIONS
-    catch (const std::out_of_range&)
     {
-        assert(false);
+        size_t idx = 0;
+        try {
+            assert(std::stof(L"1.e60", &idx) == INFINITY);
+            assert(false);
+        } catch (const std::out_of_range&) {
+            assert(idx == 0);
+        }
     }
-    idx = 0;
-    try
     {
-        std::stof("", &idx);
-        assert(false);
+        size_t idx = 0;
+        try {
+            assert(std::stof(L"1.e360", &idx) == INFINITY);
+            assert(false);
+        } catch (const std::out_of_range&) {
+            assert(idx == 0);
+        }
     }
-    catch (const std::invalid_argument&)
     {
-        assert(idx == 0);
+        size_t idx = 0;
+        try {
+            std::stof(L"", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    try
     {
-        std::stof(L"", &idx);
-        assert(false);
+        size_t idx = 0;
+        try {
+            std::stof(L"  - 8", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    catch (const std::invalid_argument&)
     {
-        assert(idx == 0);
+        size_t idx = 0;
+        try {
+            std::stof(L"a1", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    try
-    {
-        std::stof("  - 8", &idx);
-        assert(false);
-    }
-    catch (const std::invalid_argument&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        std::stof(L"  - 8", &idx);
-        assert(false);
-    }
-    catch (const std::invalid_argument&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        std::stof("a1", &idx);
-        assert(false);
-    }
-    catch (const std::invalid_argument&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        std::stof(L"a1", &idx);
-        assert(false);
-    }
-    catch (const std::invalid_argument&)
-    {
-        assert(idx == 0);
-    }
-#endif
+#endif // TEST_HAS_NO_EXCEPTIONS
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/strings/string.conversions/stoi.pass.cpp b/test/std/strings/string.conversions/stoi.pass.cpp
index b3e4163..d629043 100644
--- a/test/std/strings/string.conversions/stoi.pass.cpp
+++ b/test/std/strings/string.conversions/stoi.pass.cpp
@@ -20,95 +20,102 @@
 int main(int, char**)
 {
     assert(std::stoi("0") == 0);
-    assert(std::stoi(L"0") == 0);
     assert(std::stoi("-0") == 0);
-    assert(std::stoi(L"-0") == 0);
     assert(std::stoi("-10") == -10);
-    assert(std::stoi(L"-10") == -10);
     assert(std::stoi(" 10") == 10);
-    assert(std::stoi(L" 10") == 10);
-    size_t idx = 0;
-    assert(std::stoi("10g", &idx, 16) == 16);
-    assert(idx == 2);
-    idx = 0;
-    assert(std::stoi(L"10g", &idx, 16) == 16);
-    assert(idx == 2);
-#ifndef TEST_HAS_NO_EXCEPTIONS
-    if (std::numeric_limits<long>::max() > std::numeric_limits<int>::max())
     {
-        try
-        {
+        size_t idx = 0;
+        assert(std::stoi("10g", &idx, 16) == 16);
+        assert(idx == 2);
+    }
+#ifndef TEST_HAS_NO_EXCEPTIONS
+    if (std::numeric_limits<long>::max() > std::numeric_limits<int>::max()) {
+        size_t idx = 0;
+        try {
             std::stoi("0x100000000", &idx, 16);
             assert(false);
+        } catch (const std::out_of_range&) {
+
         }
-        catch (const std::out_of_range&)
-        {
+    }
+    {
+        size_t idx = 0;
+        try {
+            std::stoi("", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
         }
-        try
-        {
+    }
+    {
+        size_t idx = 0;
+        try {
+            std::stoi("  - 8", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
+    }
+    {
+        size_t idx = 0;
+        try {
+            std::stoi("a1", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
+    }
+#endif // TEST_HAS_NO_EXCEPTIONS
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    assert(std::stoi(L"0") == 0);
+    assert(std::stoi(L"-0") == 0);
+    assert(std::stoi(L"-10") == -10);
+    assert(std::stoi(L" 10") == 10);
+    {
+        size_t idx = 0;
+        assert(std::stoi(L"10g", &idx, 16) == 16);
+        assert(idx == 2);
+    }
+#ifndef TEST_HAS_NO_EXCEPTIONS
+    if (std::numeric_limits<long>::max() > std::numeric_limits<int>::max()) {
+        size_t idx = 0;
+        try {
             std::stoi(L"0x100000000", &idx, 16);
             assert(false);
-        }
-        catch (const std::out_of_range&)
-        {
+        } catch (const std::out_of_range&) {
+
         }
     }
-    idx = 0;
-    try
     {
-        std::stoi("", &idx);
-        assert(false);
+        size_t idx = 0;
+        try {
+            std::stoi(L"", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    catch (const std::invalid_argument&)
     {
-        assert(idx == 0);
+        size_t idx = 0;
+        try {
+            std::stoi(L"  - 8", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    try
     {
-        std::stoi(L"", &idx);
-        assert(false);
+        size_t idx = 0;
+        try {
+            std::stoi(L"a1", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    catch (const std::invalid_argument&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        std::stoi("  - 8", &idx);
-        assert(false);
-    }
-    catch (const std::invalid_argument&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        std::stoi(L"  - 8", &idx);
-        assert(false);
-    }
-    catch (const std::invalid_argument&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        std::stoi("a1", &idx);
-        assert(false);
-    }
-    catch (const std::invalid_argument&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        std::stoi(L"a1", &idx);
-        assert(false);
-    }
-    catch (const std::invalid_argument&)
-    {
-        assert(idx == 0);
-    }
-#endif
+#endif // TEST_HAS_NO_EXCEPTIONS
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/strings/string.conversions/stol.pass.cpp b/test/std/strings/string.conversions/stol.pass.cpp
index a05a4b1..4196646 100644
--- a/test/std/strings/string.conversions/stol.pass.cpp
+++ b/test/std/strings/string.conversions/stol.pass.cpp
@@ -20,96 +20,104 @@
 int main(int, char**)
 {
     assert(std::stol("0") == 0);
-    assert(std::stol(L"0") == 0);
     assert(std::stol("-0") == 0);
-    assert(std::stol(L"-0") == 0);
     assert(std::stol("-10") == -10);
-    assert(std::stol(L"-10") == -10);
     assert(std::stol(" 10") == 10);
-    assert(std::stol(L" 10") == 10);
-    size_t idx = 0;
-    assert(std::stol("10g", &idx, 16) == 16);
-    assert(idx == 2);
-    idx = 0;
-    assert(std::stol(L"10g", &idx, 16) == 16);
-    assert(idx == 2);
+    {
+        size_t idx = 0;
+        assert(std::stol("10g", &idx, 16) == 16);
+        assert(idx == 2);
+    }
 #ifndef TEST_HAS_NO_EXCEPTIONS
-    idx = 0;
-    try
     {
-        std::stol("", &idx);
-        assert(false);
+        size_t idx = 0;
+        try {
+            std::stol("", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    catch (const std::invalid_argument&)
     {
-        assert(idx == 0);
+        size_t idx = 0;
+        try {
+            std::stol("  - 8", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    try
     {
-        std::stol(L"", &idx);
-        assert(false);
+        size_t idx = 0;
+        try {
+            std::stol("a1", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    catch (const std::invalid_argument&)
     {
-        assert(idx == 0);
+        size_t idx = 0;
+        try {
+            // LWG#2009 and PR14919
+            std::stol("9999999999999999999999999999999999999999999999999", &idx);
+            assert(false);
+        } catch (const std::out_of_range&) {
+            assert(idx == 0);
+        }
     }
-    try
+#endif // TEST_HAS_NO_EXCEPTIONS
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    assert(std::stol(L"0") == 0);
+    assert(std::stol(L"-0") == 0);
+    assert(std::stol(L"-10") == -10);
+    assert(std::stol(L" 10") == 10);
     {
-        std::stol("  - 8", &idx);
-        assert(false);
+        size_t idx = 0;
+        assert(std::stol(L"10g", &idx, 16) == 16);
+        assert(idx == 2);
     }
-    catch (const std::invalid_argument&)
+#ifndef TEST_HAS_NO_EXCEPTIONS
     {
-        assert(idx == 0);
+        size_t idx = 0;
+        try {
+            std::stol(L"", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    try
     {
-        std::stol(L"  - 8", &idx);
-        assert(false);
+        size_t idx = 0;
+        try {
+            std::stol(L"  - 8", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    catch (const std::invalid_argument&)
     {
-        assert(idx == 0);
+        size_t idx = 0;
+        try {
+            std::stol(L"a1", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    try
     {
-        std::stol("a1", &idx);
-        assert(false);
+        size_t idx = 0;
+        try {
+            // LWG#2009 and PR14919
+            std::stol(L"9999999999999999999999999999999999999999999999999", &idx);
+            assert(false);
+        } catch (const std::out_of_range&) {
+            assert(idx == 0);
+        }
     }
-    catch (const std::invalid_argument&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        std::stol(L"a1", &idx);
-        assert(false);
-    }
-    catch (const std::invalid_argument&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        // LWG#2009 and PR14919
-        std::stol("9999999999999999999999999999999999999999999999999", &idx);
-        assert(false);
-    }
-    catch (const std::out_of_range&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        // LWG#2009 and PR14919
-        std::stol(L"9999999999999999999999999999999999999999999999999", &idx);
-        assert(false);
-    }
-    catch (const std::out_of_range&)
-    {
-        assert(idx == 0);
-    }
-#endif
+#endif // TEST_HAS_NO_EXCEPTIONS
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/strings/string.conversions/stold.pass.cpp b/test/std/strings/string.conversions/stold.pass.cpp
index 4b1b1b1..fd228c6 100644
--- a/test/std/strings/string.conversions/stold.pass.cpp
+++ b/test/std/strings/string.conversions/stold.pass.cpp
@@ -21,172 +21,133 @@
 int main(int, char**)
 {
     assert(std::stold("0") == 0);
-    assert(std::stold(L"0") == 0);
     assert(std::stold("-0") == 0);
-    assert(std::stold(L"-0") == 0);
     assert(std::stold("-10") == -10);
-    assert(std::stold(L"-10.5") == -10.5);
     assert(std::stold(" 10") == 10);
-    assert(std::stold(L" 10") == 10);
-    size_t idx = 0;
-    assert(std::stold("10g", &idx) == 10);
-    assert(idx == 2);
-    idx = 0;
-    assert(std::stold(L"10g", &idx) == 10);
-    assert(idx == 2);
-#ifndef TEST_HAS_NO_EXCEPTIONS
-    try
-#endif
     {
+        size_t idx = 0;
+        assert(std::stold("10g", &idx) == 10);
+        assert(idx == 2);
+    }
+    {
+        size_t idx = 0;
         assert(std::stold("1.e60", &idx) == 1.e60L);
         assert(idx == 5);
     }
-#ifndef TEST_HAS_NO_EXCEPTIONS
-    catch (const std::out_of_range&)
     {
-        assert(false);
-    }
-    try
-#endif
-    {
-        assert(std::stold(L"1.e60", &idx) == 1.e60L);
-        assert(idx == 5);
-    }
-#ifndef TEST_HAS_NO_EXCEPTIONS
-    catch (const std::out_of_range&)
-    {
-        assert(false);
-    }
-#endif
-    idx = 0;
-#ifndef TEST_HAS_NO_EXCEPTIONS
-    try
-    {
-        assert(std::stold("1.e6000", &idx) == INFINITY);
-        assert(false);
-    }
-    catch (const std::out_of_range&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        assert(std::stold(L"1.e6000", &idx) == INFINITY);
-        assert(false);
-    }
-    catch (const std::out_of_range&)
-    {
-        assert(idx == 0);
-    }
-    try
-#endif
-    {
+        size_t idx = 0;
         assert(std::stold("INF", &idx) == INFINITY);
         assert(idx == 3);
     }
-#ifndef TEST_HAS_NO_EXCEPTIONS
-    catch (const std::out_of_range&)
     {
-        assert(false);
-    }
-#endif
-    idx = 0;
-#ifndef TEST_HAS_NO_EXCEPTIONS
-    try
-#endif
-    {
-        assert(std::stold(L"INF", &idx) == INFINITY);
-        assert(idx == 3);
-    }
-#ifndef TEST_HAS_NO_EXCEPTIONS
-    catch (const std::out_of_range&)
-    {
-        assert(false);
-    }
-#endif
-    idx = 0;
-#ifndef TEST_HAS_NO_EXCEPTIONS
-    try
-#endif
-    {
+        size_t idx = 0;
         assert(std::isnan(std::stold("NAN", &idx)));
         assert(idx == 3);
     }
+
 #ifndef TEST_HAS_NO_EXCEPTIONS
-    catch (const std::out_of_range&)
     {
-        assert(false);
+        size_t idx = 0;
+        try {
+            std::stold("", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-#endif
-    idx = 0;
-#ifndef TEST_HAS_NO_EXCEPTIONS
-    try
-#endif
     {
+        size_t idx = 0;
+        try {
+            std::stold("  - 8", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
+    }
+    {
+        size_t idx = 0;
+        try {
+            std::stold("a1", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
+    }
+    {
+        size_t idx = 0;
+        try {
+            assert(std::stold("1.e6000", &idx) == INFINITY);
+            assert(false);
+        } catch (const std::out_of_range&) {
+            assert(idx == 0);
+        }
+    }
+#endif // TEST_HAS_NO_EXCEPTIONS
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    assert(std::stold(L"0") == 0);
+    assert(std::stold(L"-0") == 0);
+    assert(std::stold(L"-10.5") == -10.5);
+    assert(std::stold(L" 10") == 10);
+    {
+        size_t idx = 0;
+        assert(std::stold(L"10g", &idx) == 10);
+        assert(idx == 2);
+    }
+    {
+        size_t idx = 0;
+        assert(std::stold(L"1.e60", &idx) == 1.e60L);
+        assert(idx == 5);
+    }
+    {
+        size_t idx = 0;
+        assert(std::stold(L"INF", &idx) == INFINITY);
+        assert(idx == 3);
+    }
+    {
+        size_t idx = 0;
         assert(std::isnan(std::stold(L"NAN", &idx)));
         assert(idx == 3);
     }
 #ifndef TEST_HAS_NO_EXCEPTIONS
-    catch (const std::out_of_range&)
     {
-        assert(false);
+        size_t idx = 0;
+        try {
+            std::stold(L"", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    idx = 0;
-    try
     {
-        std::stold("", &idx);
-        assert(false);
+        size_t idx = 0;
+        try {
+            std::stold(L"  - 8", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    catch (const std::invalid_argument&)
     {
-        assert(idx == 0);
+        size_t idx = 0;
+        try {
+            std::stold(L"a1", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    try
     {
-        std::stold(L"", &idx);
-        assert(false);
+        size_t idx = 0;
+        try {
+            assert(std::stold(L"1.e6000", &idx) == INFINITY);
+            assert(false);
+        } catch (const std::out_of_range&) {
+            assert(idx == 0);
+        }
     }
-    catch (const std::invalid_argument&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        std::stold("  - 8", &idx);
-        assert(false);
-    }
-    catch (const std::invalid_argument&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        std::stold(L"  - 8", &idx);
-        assert(false);
-    }
-    catch (const std::invalid_argument&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        std::stold("a1", &idx);
-        assert(false);
-    }
-    catch (const std::invalid_argument&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        std::stold(L"a1", &idx);
-        assert(false);
-    }
-    catch (const std::invalid_argument&)
-    {
-        assert(idx == 0);
-    }
-#endif
+#endif // TEST_HAS_NO_EXCEPTIONS
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/strings/string.conversions/stoll.pass.cpp b/test/std/strings/string.conversions/stoll.pass.cpp
index bccf845..a6d53e5 100644
--- a/test/std/strings/string.conversions/stoll.pass.cpp
+++ b/test/std/strings/string.conversions/stoll.pass.cpp
@@ -20,96 +20,104 @@
 int main(int, char**)
 {
     assert(std::stoll("0") == 0);
-    assert(std::stoll(L"0") == 0);
     assert(std::stoll("-0") == 0);
-    assert(std::stoll(L"-0") == 0);
     assert(std::stoll("-10") == -10);
-    assert(std::stoll(L"-10") == -10);
     assert(std::stoll(" 10") == 10);
-    assert(std::stoll(L" 10") == 10);
-    size_t idx = 0;
-    assert(std::stoll("10g", &idx, 16) == 16);
-    assert(idx == 2);
-    idx = 0;
-    assert(std::stoll(L"10g", &idx, 16) == 16);
-    assert(idx == 2);
+    {
+        size_t idx = 0;
+        assert(std::stoll("10g", &idx, 16) == 16);
+        assert(idx == 2);
+    }
 #ifndef TEST_HAS_NO_EXCEPTIONS
-    idx = 0;
-    try
     {
-        std::stoll("", &idx);
-        assert(false);
+        size_t idx = 0;
+        try {
+            std::stoll("", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    catch (const std::invalid_argument&)
     {
-        assert(idx == 0);
+        size_t idx = 0;
+        try {
+            std::stoll("  - 8", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    try
     {
-        std::stoll(L"", &idx);
-        assert(false);
+        size_t idx = 0;
+        try {
+            std::stoll("a1", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    catch (const std::invalid_argument&)
     {
-        assert(idx == 0);
+        size_t idx = 0;
+        try {
+            // LWG#2009 and PR14919
+            std::stoll("99999999999999999999999999", &idx);
+            assert(false);
+        } catch (const std::out_of_range&) {
+            assert(idx == 0);
+        }
     }
-    try
+#endif // TEST_HAS_NO_EXCEPTIONS
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    assert(std::stoll(L"0") == 0);
+    assert(std::stoll(L"-0") == 0);
+    assert(std::stoll(L"-10") == -10);
+    assert(std::stoll(L" 10") == 10);
     {
-        std::stoll("  - 8", &idx);
-        assert(false);
+        size_t idx = 0;
+        assert(std::stoll(L"10g", &idx, 16) == 16);
+        assert(idx == 2);
     }
-    catch (const std::invalid_argument&)
+#ifndef TEST_HAS_NO_EXCEPTIONS
     {
-        assert(idx == 0);
+        size_t idx = 0;
+        try {
+            std::stoll(L"", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    try
     {
-        std::stoll(L"  - 8", &idx);
-        assert(false);
+        size_t idx = 0;
+        try {
+            std::stoll(L"  - 8", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    catch (const std::invalid_argument&)
     {
-        assert(idx == 0);
+        size_t idx = 0;
+        try {
+            std::stoll(L"a1", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    try
     {
-        std::stoll("a1", &idx);
-        assert(false);
+        size_t idx = 0;
+        try {
+            // LWG#2009 and PR14919
+            std::stoll(L"99999999999999999999999999", &idx);
+            assert(false);
+        } catch (const std::out_of_range&) {
+            assert(idx == 0);
+        }
     }
-    catch (const std::invalid_argument&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        std::stoll(L"a1", &idx);
-        assert(false);
-    }
-    catch (const std::invalid_argument&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        // LWG#2009 and PR14919
-        std::stoll("99999999999999999999999999", &idx);
-        assert(false);
-    }
-    catch (const std::out_of_range&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        // LWG#2009 and PR14919
-        std::stoll(L"99999999999999999999999999", &idx);
-        assert(false);
-    }
-    catch (const std::out_of_range&)
-    {
-        assert(idx == 0);
-    }
-#endif
+#endif // TEST_HAS_NO_EXCEPTIONS
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/strings/string.conversions/stoul.pass.cpp b/test/std/strings/string.conversions/stoul.pass.cpp
index c620925..37e7f9d 100644
--- a/test/std/strings/string.conversions/stoul.pass.cpp
+++ b/test/std/strings/string.conversions/stoul.pass.cpp
@@ -20,94 +20,102 @@
 int main(int, char**)
 {
     assert(std::stoul("0") == 0);
-    assert(std::stoul(L"0") == 0);
     assert(std::stoul("-0") == 0);
-    assert(std::stoul(L"-0") == 0);
     assert(std::stoul(" 10") == 10);
-    assert(std::stoul(L" 10") == 10);
-    size_t idx = 0;
-    assert(std::stoul("10g", &idx, 16) == 16);
-    assert(idx == 2);
-    idx = 0;
-    assert(std::stoul(L"10g", &idx, 16) == 16);
-    assert(idx == 2);
+    {
+        size_t idx = 0;
+        assert(std::stoul("10g", &idx, 16) == 16);
+        assert(idx == 2);
+    }
 #ifndef TEST_HAS_NO_EXCEPTIONS
-    idx = 0;
-    try
     {
-        std::stoul("", &idx);
-        assert(false);
+        size_t idx = 0;
+        try {
+            std::stoul("", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    catch (const std::invalid_argument&)
     {
-        assert(idx == 0);
+        size_t idx = 0;
+        try {
+            std::stoul("  - 8", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    try
     {
-        std::stoul(L"", &idx);
-        assert(false);
+        size_t idx = 0;
+        try {
+            std::stoul("a1", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    catch (const std::invalid_argument&)
     {
-        assert(idx == 0);
+        size_t idx = 0;
+        try {
+            // LWG#2009 and PR14919
+            std::stoul("9999999999999999999999999999999999999999999999999", &idx);
+            assert(false);
+        } catch (const std::out_of_range&) {
+            assert(idx == 0);
+        }
     }
-    try
+#endif // TEST_HAS_NO_EXCEPTIONS
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    assert(std::stoul(L"0") == 0);
+    assert(std::stoul(L"-0") == 0);
+    assert(std::stoul(L" 10") == 10);
     {
-        std::stoul("  - 8", &idx);
-        assert(false);
+        size_t idx = 0;
+        assert(std::stoul(L"10g", &idx, 16) == 16);
+        assert(idx == 2);
     }
-    catch (const std::invalid_argument&)
+#ifndef TEST_HAS_NO_EXCEPTIONS
     {
-        assert(idx == 0);
+        size_t idx = 0;
+        try {
+            std::stoul(L"", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    try
     {
-        std::stoul(L"  - 8", &idx);
-        assert(false);
+        size_t idx = 0;
+        try {
+            std::stoul(L"  - 8", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    catch (const std::invalid_argument&)
     {
-        assert(idx == 0);
+        size_t idx = 0;
+        try {
+            std::stoul(L"a1", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    try
     {
-        std::stoul("a1", &idx);
-        assert(false);
+        size_t idx = 0;
+        try {
+            // LWG#2009 and PR14919
+            std::stoul(L"9999999999999999999999999999999999999999999999999", &idx);
+            assert(false);
+        } catch (const std::out_of_range&) {
+            assert(idx == 0);
+        }
     }
-    catch (const std::invalid_argument&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        std::stoul(L"a1", &idx);
-        assert(false);
-    }
-    catch (const std::invalid_argument&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        // LWG#2009 and PR14919
-        std::stoul("9999999999999999999999999999999999999999999999999", &idx);
-        assert(false);
-    }
-    catch (const std::out_of_range&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        // LWG#2009 and PR14919
-        std::stoul(L"9999999999999999999999999999999999999999999999999", &idx);
-        assert(false);
-    }
-    catch (const std::out_of_range&)
-    {
-        assert(idx == 0);
-    }
-#endif
+#endif // TEST_HAS_NO_EXCEPTIONS
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/strings/string.conversions/stoull.pass.cpp b/test/std/strings/string.conversions/stoull.pass.cpp
index 803065c..dcfc583 100644
--- a/test/std/strings/string.conversions/stoull.pass.cpp
+++ b/test/std/strings/string.conversions/stoull.pass.cpp
@@ -20,95 +20,102 @@
 int main(int, char**)
 {
     assert(std::stoull("0") == 0);
-    assert(std::stoull(L"0") == 0);
     assert(std::stoull("-0") == 0);
-    assert(std::stoull(L"-0") == 0);
     assert(std::stoull(" 10") == 10);
-    assert(std::stoull(L" 10") == 10);
-    size_t idx = 0;
-    assert(std::stoull("10g", &idx, 16) == 16);
-    assert(idx == 2);
-    idx = 0;
-    assert(std::stoull(L"10g", &idx, 16) == 16);
-    assert(idx == 2);
+    {
+        size_t idx = 0;
+        assert(std::stoull("10g", &idx, 16) == 16);
+        assert(idx == 2);
+    }
 #ifndef TEST_HAS_NO_EXCEPTIONS
-    idx = 0;
-    try
     {
-        std::stoull("", &idx);
-        assert(false);
+        size_t idx = 0;
+        try {
+            std::stoull("", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    catch (const std::invalid_argument&)
     {
-        assert(idx == 0);
+        size_t idx = 0;
+        try {
+            std::stoull("  - 8", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    idx = 0;
-    try
     {
-        std::stoull(L"", &idx);
-        assert(false);
+        size_t idx = 0;
+        try {
+            std::stoull("a1", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    catch (const std::invalid_argument&)
     {
-        assert(idx == 0);
+        size_t idx = 0;
+        try {
+            // LWG#2009 and PR14919
+            std::stoull("9999999999999999999999999999999999999999999999999", &idx);
+            assert(false);
+        } catch (const std::out_of_range&) {
+            assert(idx == 0);
+        }
     }
-    try
+#endif // TEST_HAS_NO_EXCEPTIONS
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    assert(std::stoull(L"0") == 0);
+    assert(std::stoull(L"-0") == 0);
+    assert(std::stoull(L" 10") == 10);
     {
-        std::stoull("  - 8", &idx);
-        assert(false);
+        size_t idx = 0;
+        assert(std::stoull(L"10g", &idx, 16) == 16);
+        assert(idx == 2);
     }
-    catch (const std::invalid_argument&)
+#ifndef TEST_HAS_NO_EXCEPTIONS
     {
-        assert(idx == 0);
+        size_t idx = 0;
+        try {
+            std::stoull(L"", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    try
     {
-        std::stoull(L"  - 8", &idx);
-        assert(false);
+        size_t idx = 0;
+        try {
+            std::stoull(L"  - 8", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    catch (const std::invalid_argument&)
     {
-        assert(idx == 0);
+        size_t idx = 0;
+        try {
+            std::stoull(L"a1", &idx);
+            assert(false);
+        } catch (const std::invalid_argument&) {
+            assert(idx == 0);
+        }
     }
-    try
     {
-        std::stoull("a1", &idx);
-        assert(false);
+        size_t idx = 0;
+        try {
+            // LWG#2009 and PR14919
+            std::stoull(L"9999999999999999999999999999999999999999999999999", &idx);
+            assert(false);
+        } catch (const std::out_of_range&) {
+            assert(idx == 0);
+        }
     }
-    catch (const std::invalid_argument&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        std::stoull(L"a1", &idx);
-        assert(false);
-    }
-    catch (const std::invalid_argument&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        // LWG#2009 and PR14919
-        std::stoull("9999999999999999999999999999999999999999999999999", &idx);
-        assert(false);
-    }
-    catch (const std::out_of_range&)
-    {
-        assert(idx == 0);
-    }
-    try
-    {
-        // LWG#2009 and PR14919
-        std::stoull(L"9999999999999999999999999999999999999999999999999", &idx);
-        assert(false);
-    }
-    catch (const std::out_of_range&)
-    {
-        assert(idx == 0);
-    }
-#endif
+#endif // TEST_HAS_NO_EXCEPTIONS
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
   return 0;
 }
diff --git a/test/std/strings/string.conversions/to_wstring.pass.cpp b/test/std/strings/string.conversions/to_wstring.pass.cpp
index f3b4712..7909cc8 100644
--- a/test/std/strings/string.conversions/to_wstring.pass.cpp
+++ b/test/std/strings/string.conversions/to_wstring.pass.cpp
@@ -6,6 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
+// XFAIL: libcpp-has-no-wide-characters
+
 // <string>
 
 // wstring to_wstring(int val);
diff --git a/test/std/strings/string.view/string.view.capacity/capacity.pass.cpp b/test/std/strings/string.view/string.view.capacity/capacity.pass.cpp
index 741e2c1..2283cca 100644
--- a/test/std/strings/string.view/string.view.capacity/capacity.pass.cpp
+++ b/test/std/strings/string.view/string.view.capacity/capacity.pass.cpp
@@ -68,17 +68,21 @@
 #endif
     test1<std::u16string_view> ();
     test1<std::u32string_view> ();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test1<std::wstring_view> ();
+#endif
 
     test2 ( "ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE", 105 );
     test2 ( "ABCDE", 5 );
     test2 ( "a", 1 );
     test2 ( "", 0 );
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test2 ( L"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE", 105 );
     test2 ( L"ABCDE", 5 );
     test2 ( L"a", 1 );
     test2 ( L"", 0 );
+#endif
 
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     test2 ( u8"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE", 105 );
diff --git a/test/std/strings/string.view/string.view.cons/assign.pass.cpp b/test/std/strings/string.view/string.view.cons/assign.pass.cpp
index 5ca2f45..c80c8e5 100644
--- a/test/std/strings/string.view/string.view.cons/assign.pass.cpp
+++ b/test/std/strings/string.view/string.view.cons/assign.pass.cpp
@@ -35,23 +35,27 @@
     assert( test<std::u8string_view>  (u8"1234"));
 #endif
 #if TEST_STD_VER >= 11
-#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
+#   ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
     assert( test<std::u16string_view> ( u"1234"));
     assert( test<std::u32string_view> ( U"1234"));
+#   endif
 #endif
-#endif
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     assert( test<std::wstring_view>   ( L"1234"));
+#endif
 
 #if TEST_STD_VER > 11
     static_assert( test<std::string_view>    ({  "abc", 3}), "");
-#if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
+#   if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     static_assert( test<std::u8string_view>  ({u8"abc", 3}), "");
-#endif
-#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
+#   endif
+#   ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
     static_assert( test<std::u16string_view> ({ u"abc", 3}), "");
     static_assert( test<std::u32string_view> ({ U"abc", 3}), "");
-#endif
+#   endif
+#   ifndef TEST_HAS_NO_WIDE_CHARACTERS
     static_assert( test<std::wstring_view>   ({ L"abc", 3}), "");
+#   endif
 #endif
 
   return 0;
diff --git a/test/std/strings/string.view/string.view.cons/deduct.pass.cpp b/test/std/strings/string.view/string.view.cons/deduct.pass.cpp
index f838fda..e0ff5f6 100644
--- a/test/std/strings/string.view/string.view.cons/deduct.pass.cpp
+++ b/test/std/strings/string.view/string.view.cons/deduct.pass.cpp
@@ -31,7 +31,9 @@
 
 constexpr void test() {
   test<char, char*>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   test<wchar_t, wchar_t*>();
+#endif
   test<char8_t, char8_t*>();
   test<char16_t, char16_t*>();
   test<char32_t, char32_t*>();
diff --git a/test/std/strings/string.view/string.view.cons/default.pass.cpp b/test/std/strings/string.view/string.view.cons/default.pass.cpp
index ad46217..3134210 100644
--- a/test/std/strings/string.view/string.view.cons/default.pass.cpp
+++ b/test/std/strings/string.view/string.view.cons/default.pass.cpp
@@ -41,8 +41,9 @@
     test<std::u8string_view> ();
 #endif
     test<std::u32string_view> ();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<std::wstring_view> ();
-
+#endif
 
   return 0;
 }
diff --git a/test/std/strings/string.view/string.view.cons/from_iterator_sentinel.pass.cpp b/test/std/strings/string.view/string.view.cons/from_iterator_sentinel.pass.cpp
index a65ba27..e7a9e0a 100644
--- a/test/std/strings/string.view/string.view.cons/from_iterator_sentinel.pass.cpp
+++ b/test/std/strings/string.view/string.view.cons/from_iterator_sentinel.pass.cpp
@@ -32,7 +32,9 @@
 
 constexpr bool test() {
   test<char, char*>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   test<wchar_t, wchar_t*>();
+#endif
   test<char8_t, char8_t*>();
   test<char16_t, char16_t*>();
   test<char32_t, char32_t*>();
diff --git a/test/std/strings/string.view/string.view.cons/from_string.pass.cpp b/test/std/strings/string.view/string.view.cons/from_string.pass.cpp
index 99d3ecb..15f28ab 100644
--- a/test/std/strings/string.view/string.view.cons/from_string.pass.cpp
+++ b/test/std/strings/string.view/string.view.cons/from_string.pass.cpp
@@ -36,9 +36,11 @@
     test ( std::string("") );
     test ( std::string() );
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test ( std::wstring(L"QBCDE") );
     test ( std::wstring(L"") );
     test ( std::wstring() );
+#endif
 
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     test ( std::u8string{u8"QBCDE"} );
diff --git a/test/std/strings/string.view/string.view.cons/implicit_deduction_guides.pass.cpp b/test/std/strings/string.view/string.view.cons/implicit_deduction_guides.pass.cpp
index 8e1ff27..35c10da 100644
--- a/test/std/strings/string.view/string.view.cons/implicit_deduction_guides.pass.cpp
+++ b/test/std/strings/string.view/string.view.cons/implicit_deduction_guides.pass.cpp
@@ -36,29 +36,35 @@
     ASSERT_SAME_TYPE(decltype(s), std::string_view);
     assert(s == "abc");
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     using WSV = std::basic_string_view<wchar_t, constexpr_char_traits<wchar_t>>;
     const WSV win(L"abcdef");
     std::basic_string_view w(win);
     ASSERT_SAME_TYPE(decltype(w), WSV);
     assert(w == L"abcdef");
+#endif
   }
   { // Testing (3)
     std::basic_string_view s("abc", 2);
     ASSERT_SAME_TYPE(decltype(s), std::string_view);
     assert(s == "ab");
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     std::basic_string_view w(L"abcdef", 4);
     ASSERT_SAME_TYPE(decltype(w), std::wstring_view);
     assert(w == L"abcd");
+#endif
   }
   { // Testing (4)
     std::basic_string_view s("abc");
     ASSERT_SAME_TYPE(decltype(s), std::string_view);
     assert(s == "abc");
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     std::basic_string_view w(L"abcdef");
     ASSERT_SAME_TYPE(decltype(w), std::wstring_view);
     assert(w == L"abcdef");
+#endif
   }
 
   return 0;
diff --git a/test/std/strings/string.view/string.view.hash/enabled_hashes.pass.cpp b/test/std/strings/string.view/string.view.hash/enabled_hashes.pass.cpp
index ae87bd8..59ca470 100644
--- a/test/std/strings/string.view/string.view.hash/enabled_hashes.pass.cpp
+++ b/test/std/strings/string.view/string.view.hash/enabled_hashes.pass.cpp
@@ -23,7 +23,9 @@
   test_library_hash_specializations_available();
   {
     test_hash_enabled_for_type<std::string_view>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test_hash_enabled_for_type<std::wstring_view>();
+#endif
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     test_hash_enabled_for_type<std::u8string_view>();
 #endif
diff --git a/test/std/strings/string.view/string.view.hash/string_view.pass.cpp b/test/std/strings/string.view/string.view.hash/string_view.pass.cpp
index c0742ec..93a69cc 100644
--- a/test/std/strings/string.view/string.view.hash/string_view.pass.cpp
+++ b/test/std/strings/string.view/string.view.hash/string_view.pass.cpp
@@ -65,7 +65,9 @@
     test<std::u16string_view>();
     test<std::u32string_view>();
 #endif
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<std::wstring_view>();
+#endif
 
   return 0;
 }
diff --git a/test/std/strings/string.view/string.view.io/stream_insert.pass.cpp b/test/std/strings/string.view/string.view.io/stream_insert.pass.cpp
index 2c172d0..fb7dffe 100644
--- a/test/std/strings/string.view/string.view.io/stream_insert.pass.cpp
+++ b/test/std/strings/string.view/string.view.io/stream_insert.pass.cpp
@@ -21,14 +21,11 @@
 
 #include "test_macros.h"
 
-using std::string_view;
-using std::wstring_view;
-
 int main(int, char**)
 {
     {
         std::ostringstream out;
-        string_view sv("some text");
+        std::string_view sv("some text");
         out << sv;
         assert(out.good());
         assert(sv == out.str());
@@ -36,15 +33,16 @@
     {
         std::ostringstream out;
         std::string s("some text");
-        string_view sv(s);
+        std::string_view sv(s);
         out.width(12);
         out << sv;
         assert(out.good());
         assert("   " + s == out.str());
     }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     {
         std::wostringstream out;
-        wstring_view sv(L"some text");
+        std::wstring_view sv(L"some text");
         out << sv;
         assert(out.good());
         assert(sv == out.str());
@@ -52,12 +50,13 @@
     {
         std::wostringstream out;
         std::wstring s(L"some text");
-        wstring_view sv(s);
+        std::wstring_view sv(s);
         out.width(12);
         out << sv;
         assert(out.good());
         assert(L"   " + s == out.str());
     }
+#endif
 
   return 0;
 }
diff --git a/test/std/strings/string.view/string.view.iterators/begin.pass.cpp b/test/std/strings/string.view/string.view.iterators/begin.pass.cpp
index ba700c8..2a610c3 100644
--- a/test/std/strings/string.view/string.view.iterators/begin.pass.cpp
+++ b/test/std/strings/string.view/string.view.iterators/begin.pass.cpp
@@ -47,14 +47,11 @@
 #endif
     typedef std::u16string_view u16string_view;
     typedef std::u32string_view u32string_view;
-    typedef std::wstring_view   wstring_view;
 
     test(string_view   ());
     test(u16string_view());
     test(u32string_view());
-    test(wstring_view  ());
     test(string_view   ( "123"));
-    test(wstring_view  (L"123"));
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     test(u8string_view{u8"123"});
 #endif
@@ -63,6 +60,12 @@
     test(u32string_view{U"123"});
 #endif
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    typedef std::wstring_view   wstring_view;
+    test(wstring_view  ());
+    test(wstring_view  (L"123"));
+#endif
+
 #if TEST_STD_VER > 11
     {
     constexpr string_view       sv { "123", 3 };
@@ -71,7 +74,6 @@
 #endif
     constexpr u16string_view u16sv {u"123", 3 };
     constexpr u32string_view u32sv {U"123", 3 };
-    constexpr wstring_view     wsv {L"123", 3 };
 
     static_assert (    *sv.begin() ==    sv[0], "" );
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
@@ -79,7 +81,6 @@
 #endif
     static_assert ( *u16sv.begin() == u16sv[0], "" );
     static_assert ( *u32sv.begin() == u32sv[0], "" );
-    static_assert (   *wsv.begin() ==   wsv[0], "" );
 
     static_assert (    *sv.cbegin() ==    sv[0], "" );
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
@@ -87,9 +88,16 @@
 #endif
     static_assert ( *u16sv.cbegin() == u16sv[0], "" );
     static_assert ( *u32sv.cbegin() == u32sv[0], "" );
-    static_assert (   *wsv.cbegin() ==   wsv[0], "" );
-    }
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+        {
+            constexpr wstring_view     wsv {L"123", 3 };
+            static_assert (   *wsv.begin() ==   wsv[0], "" );
+            static_assert (   *wsv.cbegin() ==   wsv[0], "" );
+        }
 #endif
+    }
+#endif // TEST_STD_VER > 11
 
   return 0;
 }
diff --git a/test/std/strings/string.view/string.view.iterators/end.pass.cpp b/test/std/strings/string.view/string.view.iterators/end.pass.cpp
index 59c29e2..5a52ac5 100644
--- a/test/std/strings/string.view/string.view.iterators/end.pass.cpp
+++ b/test/std/strings/string.view/string.view.iterators/end.pass.cpp
@@ -56,14 +56,11 @@
 #endif
     typedef std::u16string_view u16string_view;
     typedef std::u32string_view u32string_view;
-    typedef std::wstring_view   wstring_view;
 
     test(string_view   ());
     test(u16string_view());
     test(u32string_view());
-    test(wstring_view  ());
     test(string_view   ( "123"));
-    test(wstring_view  (L"123"));
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     test(u8string_view{u8"123"});
 #endif
@@ -72,6 +69,12 @@
     test(u32string_view{U"123"});
 #endif
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    typedef std::wstring_view   wstring_view;
+    test(wstring_view  ());
+    test(wstring_view  (L"123"));
+#endif
+
 #if TEST_STD_VER > 11
     {
     constexpr string_view       sv { "123", 3 };
@@ -80,7 +83,6 @@
 #endif
     constexpr u16string_view u16sv {u"123", 3 };
     constexpr u32string_view u32sv {U"123", 3 };
-    constexpr wstring_view     wsv {L"123", 3 };
 
     static_assert (    sv.begin() !=    sv.end(), "" );
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
@@ -88,7 +90,6 @@
 #endif
     static_assert ( u16sv.begin() != u16sv.end(), "" );
     static_assert ( u32sv.begin() != u32sv.end(), "" );
-    static_assert (   wsv.begin() !=   wsv.end(), "" );
 
     static_assert (    sv.begin() !=    sv.cend(), "" );
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
@@ -96,9 +97,16 @@
 #endif
     static_assert ( u16sv.begin() != u16sv.cend(), "" );
     static_assert ( u32sv.begin() != u32sv.cend(), "" );
-    static_assert (   wsv.begin() !=   wsv.cend(), "" );
-    }
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+        {
+            constexpr wstring_view     wsv {L"123", 3 };
+            static_assert (   wsv.begin() !=   wsv.end(), "" );
+            static_assert (   wsv.begin() !=   wsv.cend(), "" );
+        }
 #endif
+    }
+#endif // TEST_STD_VER > 11
 
   return 0;
 }
diff --git a/test/std/strings/string.view/string.view.iterators/rbegin.pass.cpp b/test/std/strings/string.view/string.view.iterators/rbegin.pass.cpp
index a57d7b4..0f3c110 100644
--- a/test/std/strings/string.view/string.view.iterators/rbegin.pass.cpp
+++ b/test/std/strings/string.view/string.view.iterators/rbegin.pass.cpp
@@ -48,14 +48,11 @@
 #endif
     typedef std::u16string_view u16string_view;
     typedef std::u32string_view u32string_view;
-    typedef std::wstring_view   wstring_view;
 
     test(string_view   ());
     test(u16string_view());
     test(u32string_view());
-    test(wstring_view  ());
     test(string_view   ( "123"));
-    test(wstring_view  (L"123"));
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     test(u8string_view{u8"123"});
 #endif
@@ -64,6 +61,12 @@
     test(u32string_view{U"123"});
 #endif
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    typedef std::wstring_view   wstring_view;
+    test(wstring_view  ());
+    test(wstring_view  (L"123"));
+#endif
+
 #if TEST_STD_VER > 14
     {
     constexpr string_view       sv { "123", 3 };
@@ -72,7 +75,6 @@
 #endif
     constexpr u16string_view u16sv {u"123", 3 };
     constexpr u32string_view u32sv {U"123", 3 };
-    constexpr wstring_view     wsv {L"123", 3 };
 
     static_assert (    *sv.rbegin() ==    sv[2], "" );
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
@@ -80,7 +82,6 @@
 #endif
     static_assert ( *u16sv.rbegin() == u16sv[2], "" );
     static_assert ( *u32sv.rbegin() == u32sv[2], "" );
-    static_assert (   *wsv.rbegin() ==   wsv[2], "" );
 
     static_assert (    *sv.crbegin() ==    sv[2], "" );
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
@@ -88,9 +89,16 @@
 #endif
     static_assert ( *u16sv.crbegin() == u16sv[2], "" );
     static_assert ( *u32sv.crbegin() == u32sv[2], "" );
-    static_assert (   *wsv.crbegin() ==   wsv[2], "" );
-    }
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+        {
+            constexpr wstring_view     wsv {L"123", 3 };
+            static_assert (   *wsv.rbegin() ==   wsv[2], "" );
+            static_assert (   *wsv.crbegin() ==   wsv[2], "" );
+        }
 #endif
+    }
+#endif // TEST_STD_VER > 14
 
   return 0;
 }
diff --git a/test/std/strings/string.view/string.view.iterators/rend.pass.cpp b/test/std/strings/string.view/string.view.iterators/rend.pass.cpp
index e0db02c..1eb781d 100644
--- a/test/std/strings/string.view/string.view.iterators/rend.pass.cpp
+++ b/test/std/strings/string.view/string.view.iterators/rend.pass.cpp
@@ -56,14 +56,11 @@
 #endif
     typedef std::u16string_view u16string_view;
     typedef std::u32string_view u32string_view;
-    typedef std::wstring_view   wstring_view;
 
     test(string_view   ());
     test(u16string_view());
     test(u32string_view());
-    test(wstring_view  ());
     test(string_view   ( "123"));
-    test(wstring_view  (L"123"));
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     test(u8string_view{u8"123"});
 #endif
@@ -72,6 +69,12 @@
     test(u32string_view{U"123"});
 #endif
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    typedef std::wstring_view   wstring_view;
+    test(wstring_view  ());
+    test(wstring_view  (L"123"));
+#endif
+
 #if TEST_STD_VER > 14
     {
     constexpr string_view       sv { "123", 3 };
@@ -80,7 +83,6 @@
 #endif
     constexpr u16string_view u16sv {u"123", 3 };
     constexpr u32string_view u32sv {U"123", 3 };
-    constexpr wstring_view     wsv {L"123", 3 };
 
     static_assert (    *--sv.rend() ==    sv[0], "" );
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
@@ -88,7 +90,6 @@
 #endif
     static_assert ( *--u16sv.rend() == u16sv[0], "" );
     static_assert ( *--u32sv.rend() == u32sv[0], "" );
-    static_assert (   *--wsv.rend() ==   wsv[0], "" );
 
     static_assert (    *--sv.crend() ==    sv[0], "" );
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
@@ -96,9 +97,16 @@
 #endif
     static_assert ( *--u16sv.crend() == u16sv[0], "" );
     static_assert ( *--u32sv.crend() == u32sv[0], "" );
-    static_assert (   *--wsv.crend() ==   wsv[0], "" );
-    }
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+        {
+            constexpr wstring_view     wsv {L"123", 3 };
+            static_assert (   *--wsv.rend() ==   wsv[0], "" );
+            static_assert (   *--wsv.crend() ==   wsv[0], "" );
+        }
 #endif
+    }
+#endif // TEST_STD_VER > 14
 
   return 0;
 }
diff --git a/test/std/strings/string.view/string.view.modifiers/remove_prefix.pass.cpp b/test/std/strings/string.view/string.view.modifiers/remove_prefix.pass.cpp
index 0e33130..cb65cdf 100644
--- a/test/std/strings/string.view/string.view.modifiers/remove_prefix.pass.cpp
+++ b/test/std/strings/string.view/string.view.modifiers/remove_prefix.pass.cpp
@@ -50,9 +50,11 @@
     test ( "a", 1 );
     test ( "", 0 );
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test ( L"ABCDE", 5 );
     test ( L"a", 1 );
     test ( L"", 0 );
+#endif
 
 #if TEST_STD_VER >= 11
     test ( u"ABCDE", 5 );
diff --git a/test/std/strings/string.view/string.view.modifiers/remove_suffix.pass.cpp b/test/std/strings/string.view/string.view.modifiers/remove_suffix.pass.cpp
index cab1254..341ea66 100644
--- a/test/std/strings/string.view/string.view.modifiers/remove_suffix.pass.cpp
+++ b/test/std/strings/string.view/string.view.modifiers/remove_suffix.pass.cpp
@@ -51,9 +51,11 @@
     test ( "a", 1 );
     test ( "", 0 );
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test ( L"ABCDE", 5 );
     test ( L"a", 1 );
     test ( L"", 0 );
+#endif
 
 #if TEST_STD_VER >= 11
     test ( u"ABCDE", 5 );
diff --git a/test/std/strings/string.view/string.view.modifiers/swap.pass.cpp b/test/std/strings/string.view/string.view.modifiers/swap.pass.cpp
index 0f0ae48..21dfa57 100644
--- a/test/std/strings/string.view/string.view.modifiers/swap.pass.cpp
+++ b/test/std/strings/string.view/string.view.modifiers/swap.pass.cpp
@@ -50,9 +50,11 @@
     test ( "a", 1 );
     test ( "", 0 );
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test ( L"ABCDE", 5 );
     test ( L"a", 1 );
     test ( L"", 0 );
+#endif
 
 #if TEST_STD_VER >= 11
     test ( u"ABCDE", 5 );
diff --git a/test/std/strings/string.view/string.view.nonmem/quoted.pass.cpp b/test/std/strings/string.view/string.view.nonmem/quoted.pass.cpp
index 3ad9ae2..3e7f85e 100644
--- a/test/std/strings/string.view/string.view.nonmem/quoted.pass.cpp
+++ b/test/std/strings/string.view/string.view.nonmem/quoted.pass.cpp
@@ -22,12 +22,13 @@
 
 bool is_skipws ( const std::istream *is ) {
     return ( is->flags() & std::ios_base::skipws ) != 0;
-    }
+}
 
-
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 bool is_skipws ( const std::wistream *is ) {
     return ( is->flags() & std::ios_base::skipws ) != 0;
-    }
+}
+#endif
 
 void round_trip ( const char *p ) {
     std::stringstream ss;
@@ -92,7 +93,7 @@
     return s;
 }
 
-
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 void round_trip ( const wchar_t *p ) {
     std::wstringstream ss;
     bool skippingws = is_skipws ( &ss );
@@ -159,6 +160,7 @@
     ss >> std::quoted(s, delim, escape);
     return s;
 }
+#endif // TEST_HAS_NO_WIDE_CHARACTERS
 
 int main(int, char**)
 {
@@ -167,10 +169,12 @@
     round_trip_d  (  "", 'q' );
     round_trip_e  (  "", 'q' );
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     round_trip    ( L"" );
     round_trip_ws ( L"" );
     round_trip_d  ( L"", 'q' );
     round_trip_e  ( L"", 'q' );
+#endif
 
     round_trip    (  "Hi" );
     round_trip_ws (  "Hi" );
@@ -179,34 +183,42 @@
     assert ( quote ( "Hi", '!' ) == "!Hi!" );
     assert ( quote ( "Hi!", '!' ) == R"(!Hi\!!)" );
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     round_trip    ( L"Hi" );
     round_trip_ws ( L"Hi" );
     round_trip_d  ( L"Hi", '!' );
     round_trip_e  ( L"Hi", '!' );
     assert ( quote ( L"Hi", '!' )  == L"!Hi!" );
     assert ( quote ( L"Hi!", '!' ) == LR"(!Hi\!!)" );
+#endif
 
     round_trip    (  "Hi Mom" );
     round_trip_ws (  "Hi Mom" );
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     round_trip    ( L"Hi Mom" );
     round_trip_ws ( L"Hi Mom" );
+#endif
 
     assert ( quote (  "" )  ==  "\"\"" );
-    assert ( quote ( L"" )  == L"\"\"" );
     assert ( quote (  "a" ) ==  "\"a\"" );
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    assert ( quote ( L"" )  == L"\"\"" );
     assert ( quote ( L"a" ) == L"\"a\"" );
+#endif
 
-//  missing end quote - must not hang
+    // missing end quote - must not hang
     assert ( unquote (  "\"abc" ) ==  "abc" );
-    assert ( unquote ( L"\"abc" ) == L"abc" );
-
     assert ( unquote (  "abc" ) == "abc" ); // no delimiter
-    assert ( unquote ( L"abc" ) == L"abc" ); // no delimiter
     assert ( unquote (  "abc def" ) ==  "abc" ); // no delimiter
-    assert ( unquote ( L"abc def" ) == L"abc" ); // no delimiter
-
     assert ( unquote (  "" ) ==  "" ); // nothing there
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+    assert ( unquote ( L"\"abc" ) == L"abc" );
+    assert ( unquote ( L"abc" ) == L"abc" ); // no delimiter
+    assert ( unquote ( L"abc def" ) == L"abc" ); // no delimiter
     assert ( unquote ( L"" ) == L"" ); // nothing there
+#endif
 
     return 0;
 }
diff --git a/test/std/strings/string.view/string_view.literals/literal.pass.cpp b/test/std/strings/string.view/string_view.literals/literal.pass.cpp
index 4b209f3..5c34507 100644
--- a/test/std/strings/string.view/string_view.literals/literal.pass.cpp
+++ b/test/std/strings/string.view/string_view.literals/literal.pass.cpp
@@ -27,43 +27,57 @@
 
         ASSERT_SAME_TYPE(decltype(  "Hi"sv), std::string_view);
         ASSERT_SAME_TYPE(decltype(u8"Hi"sv), u8string_view);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         ASSERT_SAME_TYPE(decltype( L"Hi"sv), std::wstring_view);
+#endif
         ASSERT_SAME_TYPE(decltype( u"Hi"sv), std::u16string_view);
         ASSERT_SAME_TYPE(decltype( U"Hi"sv), std::u32string_view);
 
         std::string_view foo;
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         std::wstring_view Lfoo;
+#endif
         u8string_view u8foo;
         std::u16string_view ufoo;
         std::u32string_view Ufoo;
 
         foo  =    ""sv;     assert(  foo.size() == 0);
         u8foo = u8""sv;     assert(u8foo.size() == 0);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         Lfoo  =  L""sv;     assert( Lfoo.size() == 0);
+#endif
         ufoo  =  u""sv;     assert( ufoo.size() == 0);
         Ufoo  =  U""sv;     assert( Ufoo.size() == 0);
 
         foo   =   " "sv;    assert(  foo.size() == 1);
         u8foo = u8" "sv;    assert(u8foo.size() == 1);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         Lfoo  =  L" "sv;    assert( Lfoo.size() == 1);
+#endif
         ufoo  =  u" "sv;    assert( ufoo.size() == 1);
         Ufoo  =  U" "sv;    assert( Ufoo.size() == 1);
 
         foo   =   "ABC"sv;  assert(  foo ==   "ABC");   assert(  foo == std::string_view   (  "ABC"));
         u8foo = u8"ABC"sv;  assert(u8foo == u8"ABC");   assert(u8foo == u8string_view      (u8"ABC"));
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         Lfoo  =  L"ABC"sv;  assert( Lfoo ==  L"ABC");   assert( Lfoo == std::wstring_view  ( L"ABC"));
+#endif
         ufoo  =  u"ABC"sv;  assert( ufoo ==  u"ABC");   assert( ufoo == std::u16string_view( u"ABC"));
         Ufoo  =  U"ABC"sv;  assert( Ufoo ==  U"ABC");   assert( Ufoo == std::u32string_view( U"ABC"));
 
         static_assert(  "ABC"sv.size() == 3, "");
         static_assert(u8"ABC"sv.size() == 3, "");
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         static_assert( L"ABC"sv.size() == 3, "");
+#endif
         static_assert( u"ABC"sv.size() == 3, "");
         static_assert( U"ABC"sv.size() == 3, "");
 
         ASSERT_NOEXCEPT(  "ABC"sv);
         ASSERT_NOEXCEPT(u8"ABC"sv);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         ASSERT_NOEXCEPT( L"ABC"sv);
+#endif
         ASSERT_NOEXCEPT( u"ABC"sv);
         ASSERT_NOEXCEPT( U"ABC"sv);
     }
diff --git a/test/std/strings/string.view/trivially_copyable.compile.pass.cpp b/test/std/strings/string.view/trivially_copyable.compile.pass.cpp
index 934ddbd..6a22864 100644
--- a/test/std/strings/string.view/trivially_copyable.compile.pass.cpp
+++ b/test/std/strings/string.view/trivially_copyable.compile.pass.cpp
@@ -13,8 +13,12 @@
 #include <string_view>
 #include <type_traits>
 
+#include "test_macros.h"
+
 static_assert(std::is_trivially_copyable<std::basic_string_view<char> >::value, "");
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 static_assert(std::is_trivially_copyable<std::basic_string_view<wchar_t> >::value, "");
+#endif
 #ifndef _LIBCPP_HAS_NO_CHAR8_T
 static_assert(std::is_trivially_copyable<std::basic_string_view<char8_t> >::value, "");
 #endif
diff --git a/test/std/utilities/format/format.arguments/format.arg.store/class.pass.cpp b/test/std/utilities/format/format.arguments/format.arg.store/class.pass.cpp
index 49b8d88..fe7a42d 100644
--- a/test/std/utilities/format/format.arguments/format.arg.store/class.pass.cpp
+++ b/test/std/utilities/format/format.arguments/format.arg.store/class.pass.cpp
@@ -72,7 +72,9 @@
 
 void test() {
   test<char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   test<wchar_t>();
+#endif
 }
 
 int main(int, char**) {
diff --git a/test/std/utilities/format/format.arguments/format.arg.store/make_format_args.sh.cpp b/test/std/utilities/format/format.arguments/format.arg.store/make_format_args.sh.cpp
index 009bf72..af174ea 100644
--- a/test/std/utilities/format/format.arguments/format.arg.store/make_format_args.sh.cpp
+++ b/test/std/utilities/format/format.arguments/format.arg.store/make_format_args.sh.cpp
@@ -8,6 +8,7 @@
 // UNSUPPORTED: c++03, c++11, c++14, c++17
 // UNSUPPORTED: libcpp-no-concepts
 // UNSUPPORTED: libcpp-has-no-incomplete-format
+// UNSUPPORTED: libcpp-has-no-wide-characters
 
 // Validate it works regardless of the signedness of `char`.
 // RUN: %{cxx} %{flags} %{compile_flags} -fsigned-char -fsyntax-only %s
diff --git a/test/std/utilities/format/format.arguments/format.arg.store/make_wformat_args.pass.cpp b/test/std/utilities/format/format.arguments/format.arg.store/make_wformat_args.pass.cpp
index d654dea..9b3a567 100644
--- a/test/std/utilities/format/format.arguments/format.arg.store/make_wformat_args.pass.cpp
+++ b/test/std/utilities/format/format.arguments/format.arg.store/make_wformat_args.pass.cpp
@@ -8,6 +8,7 @@
 // UNSUPPORTED: c++03, c++11, c++14, c++17
 // UNSUPPORTED: libcpp-no-concepts
 // UNSUPPORTED: libcpp-has-no-incomplete-format
+// XFAIL: libcpp-has-no-wide-characters
 // TODO FMT Evaluate gcc-11 status
 // UNSUPPORTED: gcc-11
 
diff --git a/test/std/utilities/format/format.arguments/format.args/ctor.pass.cpp b/test/std/utilities/format/format.arguments/format.args/ctor.pass.cpp
index 26a4057..2a73d95 100644
--- a/test/std/utilities/format/format.arguments/format.args/ctor.pass.cpp
+++ b/test/std/utilities/format/format.arguments/format.args/ctor.pass.cpp
@@ -57,7 +57,9 @@
 
 void test() {
   test<char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   test<wchar_t>();
+#endif
 }
 
 int main(int, char**) {
diff --git a/test/std/utilities/format/format.arguments/format.args/types.compile.pass.cpp b/test/std/utilities/format/format.arguments/format.args/types.compile.pass.cpp
index 356475c..cac83f7 100644
--- a/test/std/utilities/format/format.arguments/format.args/types.compile.pass.cpp
+++ b/test/std/utilities/format/format.arguments/format.args/types.compile.pass.cpp
@@ -25,19 +25,23 @@
 
 static_assert(std::is_same_v<std::format_args,
                              std::basic_format_args<std::format_context>>);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 static_assert(std::is_same_v<std::wformat_args,
                              std::basic_format_args<std::wformat_context>>);
+#endif
 
 static_assert(std::is_same_v<
               std::format_args_t<std::back_insert_iterator<std::string>, char>,
               std::basic_format_args<std::basic_format_context<
                   std::back_insert_iterator<std::string>, char>>>);
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 static_assert(
     std::is_same_v<
         std::format_args_t<std::back_insert_iterator<std::wstring>, wchar_t>,
         std::basic_format_args<std::basic_format_context<
             std::back_insert_iterator<std::wstring>, wchar_t>>>);
+#endif
 
 static_assert(
     std::is_same_v<
diff --git a/test/std/utilities/format/format.formatter/format.context/format.context/advance_to.pass.cpp b/test/std/utilities/format/format.formatter/format.context/format.context/advance_to.pass.cpp
index eea6800..849b0e0 100644
--- a/test/std/utilities/format/format.formatter/format.context/format.context/advance_to.pass.cpp
+++ b/test/std/utilities/format/format.formatter/format.context/format.context/advance_to.pass.cpp
@@ -47,9 +47,11 @@
       std::make_format_args<std::basic_format_context<
           std::back_insert_iterator<std::basic_string<char>>, char>>()));
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   test(std::basic_format_args(
       std::make_format_args<std::basic_format_context<
           std::back_insert_iterator<std::basic_string<wchar_t>>, wchar_t>>()));
+#endif
 #ifndef _LIBCPP_HAS_NO_CHAR8_T
   test(std::basic_format_args(
       std::make_format_args<std::basic_format_context<
diff --git a/test/std/utilities/format/format.formatter/format.context/format.context/arg.pass.cpp b/test/std/utilities/format/format.formatter/format.context/format.context/arg.pass.cpp
index 5157fe7..e345878 100644
--- a/test/std/utilities/format/format.formatter/format.context/format.context/arg.pass.cpp
+++ b/test/std/utilities/format/format.formatter/format.context/format.context/arg.pass.cpp
@@ -46,7 +46,9 @@
 
 int main(int, char**) {
   test<std::back_insert_iterator<std::basic_string<char>>, char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   test<std::back_insert_iterator<std::basic_string<wchar_t>>, wchar_t>();
+#endif
 #ifndef _LIBCPP_HAS_NO_CHAR8_T
   test<std::back_insert_iterator<std::basic_string<char8_t>>, char8_t>();
 #endif
diff --git a/test/std/utilities/format/format.formatter/format.context/format.context/ctor.pass.cpp b/test/std/utilities/format/format.formatter/format.context/format.context/ctor.pass.cpp
index 909b61f..6ea2ee8 100644
--- a/test/std/utilities/format/format.formatter/format.context/format.context/ctor.pass.cpp
+++ b/test/std/utilities/format/format.formatter/format.context/format.context/ctor.pass.cpp
@@ -122,7 +122,9 @@
 
 void test() {
   test<std::back_insert_iterator<std::basic_string<char>>, char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   test<std::back_insert_iterator<std::basic_string<wchar_t>>, wchar_t>();
+#endif
 #ifndef _LIBCPP_HAS_NO_CHAR8_T
   test<std::back_insert_iterator<std::basic_string<char8_t>>, char8_t>();
 #endif
diff --git a/test/std/utilities/format/format.formatter/format.context/format.context/locale.pass.cpp b/test/std/utilities/format/format.formatter/format.context/format.context/locale.pass.cpp
index 0fe789e..982416f 100644
--- a/test/std/utilities/format/format.formatter/format.context/format.context/locale.pass.cpp
+++ b/test/std/utilities/format/format.formatter/format.context/format.context/locale.pass.cpp
@@ -78,7 +78,9 @@
 
 void test() {
   test<std::back_insert_iterator<std::basic_string<char>>, char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   test<std::back_insert_iterator<std::basic_string<wchar_t>>, wchar_t>();
+#endif
 #ifndef _LIBCPP_HAS_NO_CHAR8_T
   test<std::back_insert_iterator<std::basic_string<char8_t>>, char8_t>();
 #endif
diff --git a/test/std/utilities/format/format.formatter/format.context/format.context/out.pass.cpp b/test/std/utilities/format/format.formatter/format.context/format.context/out.pass.cpp
index af4d61f..9c56f05 100644
--- a/test/std/utilities/format/format.formatter/format.context/format.context/out.pass.cpp
+++ b/test/std/utilities/format/format.formatter/format.context/format.context/out.pass.cpp
@@ -43,9 +43,11 @@
   test(std::basic_format_args(
       std::make_format_args<std::basic_format_context<
           std::back_insert_iterator<std::basic_string<char>>, char>>()));
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   test(std::basic_format_args(
       std::make_format_args<std::basic_format_context<
           std::back_insert_iterator<std::basic_string<wchar_t>>, wchar_t>>()));
+#endif
 #ifndef _LIBCPP_HAS_NO_CHAR8_T
   test(std::basic_format_args(
       std::make_format_args<std::basic_format_context<
diff --git a/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.bool.pass.cpp b/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.bool.pass.cpp
index 41b6f12..162c23d 100644
--- a/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.bool.pass.cpp
+++ b/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.bool.pass.cpp
@@ -73,7 +73,9 @@
 
 int main(int, char**) {
   test_boolean<char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   test_boolean<wchar_t>();
+#endif
 
   return 0;
 }
diff --git a/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.c_string.pass.cpp b/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.c_string.pass.cpp
index ab72914..5e0af39 100644
--- a/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.c_string.pass.cpp
+++ b/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.c_string.pass.cpp
@@ -100,8 +100,10 @@
 int main(int, char**) {
   test_char_pointer<char*>();
   test_char_pointer<const char*>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   test_char_pointer<wchar_t*>();
   test_char_pointer<const wchar_t*>();
+#endif
 
   return 0;
 }
diff --git a/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.char.pass.cpp b/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.char.pass.cpp
index f0ec2dd..65bca30 100644
--- a/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.char.pass.cpp
+++ b/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.char.pass.cpp
@@ -76,8 +76,10 @@
 
 int main(int, char**) {
   test_char_type<char, char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   test_char_type<char, wchar_t>();
   test_char_type<wchar_t, wchar_t>();
+#endif
 
   return 0;
 }
diff --git a/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.const_char_array.pass.cpp b/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.const_char_array.pass.cpp
index b222804..386af84 100644
--- a/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.const_char_array.pass.cpp
+++ b/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.const_char_array.pass.cpp
@@ -114,7 +114,9 @@
 
 int main(int, char**) {
   test_array<char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   test_array<wchar_t>();
+#endif
 
   return 0;
 }
diff --git a/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.floating_point.pass.cpp b/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.floating_point.pass.cpp
index 30708a1..1ba1189 100644
--- a/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.floating_point.pass.cpp
+++ b/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.floating_point.pass.cpp
@@ -113,7 +113,9 @@
 
 int main(int, char**) {
   test_all_float_types<char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   test_all_float_types<wchar_t>();
+#endif
 
   return 0;
 }
diff --git a/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.signed_integral.pass.cpp b/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.signed_integral.pass.cpp
index 526531f..8f2d5af 100644
--- a/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.signed_integral.pass.cpp
+++ b/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.signed_integral.pass.cpp
@@ -115,7 +115,9 @@
 
 int main(int, char**) {
   test_all_signed_integral_types<char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   test_all_signed_integral_types<wchar_t>();
+#endif
 
   return 0;
 }
diff --git a/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.string.pass.cpp b/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.string.pass.cpp
index 6a6de7e..df72c89 100644
--- a/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.string.pass.cpp
+++ b/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.string.pass.cpp
@@ -118,7 +118,9 @@
 
 int main(int, char**) {
   test_all_string_types<char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   test_all_string_types<wchar_t>();
+#endif
 
   return 0;
 }
diff --git a/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.unsigned_integral.pass.cpp b/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.unsigned_integral.pass.cpp
index f232112..22e330c 100644
--- a/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.unsigned_integral.pass.cpp
+++ b/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.unsigned_integral.pass.cpp
@@ -103,7 +103,9 @@
 
 int main(int, char**) {
   test_all_unsigned_integral_types<char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   test_all_unsigned_integral_types<wchar_t>();
+#endif
 
   return 0;
 }
diff --git a/test/std/utilities/format/format.formatter/format.context/types.compile.pass.cpp b/test/std/utilities/format/format.formatter/format.context/types.compile.pass.cpp
index eb8d1b7..13eb467 100644
--- a/test/std/utilities/format/format.formatter/format.context/types.compile.pass.cpp
+++ b/test/std/utilities/format/format.formatter/format.context/types.compile.pass.cpp
@@ -99,7 +99,9 @@
 
 constexpr void test() {
   test<std::back_insert_iterator<std::basic_string<char>>, char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   test<std::back_insert_iterator<std::basic_string<wchar_t>>, wchar_t>();
+#endif
   test<std::back_insert_iterator<std::basic_string<char8_t>>, char8_t>();
   test<std::back_insert_iterator<std::basic_string<char16_t>>, char16_t>();
   test<std::back_insert_iterator<std::basic_string<char32_t>>, char32_t>();
@@ -109,11 +111,13 @@
               std::format_context,
               std::basic_format_context<
                   std::back_insert_iterator<std::basic_string<char>>, char>>);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 static_assert(
     std::is_same_v<
         std::wformat_context,
         std::basic_format_context<
             std::back_insert_iterator<std::basic_string<wchar_t>>, wchar_t>>);
+#endif
 
 // Required for MSVC internal test runner compatibility.
 int main(int, char**) { return 0; }
diff --git a/test/std/utilities/format/format.formatter/format.parse.ctx/types.compile.pass.cpp b/test/std/utilities/format/format.formatter/format.parse.ctx/types.compile.pass.cpp
index 7e1a6b6..56e2d06 100644
--- a/test/std/utilities/format/format.formatter/format.parse.ctx/types.compile.pass.cpp
+++ b/test/std/utilities/format/format.formatter/format.parse.ctx/types.compile.pass.cpp
@@ -47,7 +47,9 @@
 
 constexpr void test() {
   test<char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   test<wchar_t>();
+#endif
 #ifndef _LIBCPP_HAS_NO_CHAR8_T
   test<char8_t>();
 #endif
@@ -59,8 +61,10 @@
 
 static_assert(std::is_same_v<std::format_parse_context,
                              std::basic_format_parse_context<char> >);
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 static_assert(std::is_same_v<std::wformat_parse_context,
                              std::basic_format_parse_context<wchar_t> >);
+#endif
 
 // Required for MSVC internal test runner compatibility.
 int main(int, char**) { return 0; }
diff --git a/test/std/utilities/format/format.functions/format.locale.pass.cpp b/test/std/utilities/format/format.functions/format.locale.pass.cpp
index 1fb6c3b..4da2f2e 100644
--- a/test/std/utilities/format/format.functions/format.locale.pass.cpp
+++ b/test/std/utilities/format/format.functions/format.locale.pass.cpp
@@ -66,10 +66,12 @@
 };
 
 int main(int, char**) {
-  format_tests_char_to_wchar_t(test);
-
   format_tests<char>(test, test_exception);
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+  format_tests_char_to_wchar_t(test);
   format_tests<wchar_t>(test, test_exception);
+#endif
 
   return 0;
 }
diff --git a/test/std/utilities/format/format.functions/format.pass.cpp b/test/std/utilities/format/format.functions/format.pass.cpp
index 392a412..b6dffd8 100644
--- a/test/std/utilities/format/format.functions/format.pass.cpp
+++ b/test/std/utilities/format/format.functions/format.pass.cpp
@@ -75,10 +75,12 @@
 };
 
 int main(int, char**) {
-  format_tests_char_to_wchar_t(test);
-
   format_tests<char>(test, test_exception);
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+  format_tests_char_to_wchar_t(test);
   format_tests<wchar_t>(test, test_exception);
+#endif
 
   return 0;
 }
diff --git a/test/std/utilities/format/format.functions/format_tests.h b/test/std/utilities/format/format.functions/format_tests.h
index 3da2edf..a2d71a9 100644
--- a/test/std/utilities/format/format.functions/format_tests.h
+++ b/test/std/utilities/format/format.functions/format_tests.h
@@ -1100,10 +1100,12 @@
 #endif
 }
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 template <class TestFunction>
 void format_tests_char_to_wchar_t(TestFunction check) {
   using CharT = wchar_t;
   check(STR("hello 09azA"), STR("hello {}{}{}{}{}"), '0', '9', 'a', 'z', 'A');
 }
+#endif
 
 #endif
diff --git a/test/std/utilities/format/format.functions/format_to.locale.pass.cpp b/test/std/utilities/format/format.functions/format_to.locale.pass.cpp
index 461f541..98356fd 100644
--- a/test/std/utilities/format/format.functions/format_to.locale.pass.cpp
+++ b/test/std/utilities/format/format.functions/format_to.locale.pass.cpp
@@ -81,10 +81,12 @@
 };
 
 int main(int, char**) {
-  format_tests_char_to_wchar_t(test);
-
   format_tests<char>(test, test_exception);
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+  format_tests_char_to_wchar_t(test);
   format_tests<wchar_t>(test, test_exception);
+#endif
 
   return 0;
 }
diff --git a/test/std/utilities/format/format.functions/format_to.pass.cpp b/test/std/utilities/format/format.functions/format_to.pass.cpp
index fc988be..d8d24f9 100644
--- a/test/std/utilities/format/format.functions/format_to.pass.cpp
+++ b/test/std/utilities/format/format.functions/format_to.pass.cpp
@@ -82,10 +82,12 @@
 };
 
 int main(int, char**) {
-  format_tests_char_to_wchar_t(test);
-
   format_tests<char>(test, test_exception);
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+  format_tests_char_to_wchar_t(test);
   format_tests<wchar_t>(test, test_exception);
+#endif
 
   return 0;
 }
diff --git a/test/std/utilities/format/format.functions/format_to_n.locale.pass.cpp b/test/std/utilities/format/format.functions/format_to_n.locale.pass.cpp
index 40c502a..206450b 100644
--- a/test/std/utilities/format/format.functions/format_to_n.locale.pass.cpp
+++ b/test/std/utilities/format/format.functions/format_to_n.locale.pass.cpp
@@ -119,10 +119,12 @@
 };
 
 int main(int, char**) {
-  format_tests_char_to_wchar_t(test);
-
   format_tests<char>(test, test_exception);
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+  format_tests_char_to_wchar_t(test);
   format_tests<wchar_t>(test, test_exception);
+#endif
 
   return 0;
 }
diff --git a/test/std/utilities/format/format.functions/format_to_n.pass.cpp b/test/std/utilities/format/format.functions/format_to_n.pass.cpp
index 98b7c0c..6f69af4 100644
--- a/test/std/utilities/format/format.functions/format_to_n.pass.cpp
+++ b/test/std/utilities/format/format.functions/format_to_n.pass.cpp
@@ -115,10 +115,12 @@
 };
 
 int main(int, char**) {
-  format_tests_char_to_wchar_t(test);
-
   format_tests<char>(test, test_exception);
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+  format_tests_char_to_wchar_t(test);
   format_tests<wchar_t>(test, test_exception);
+#endif
 
   return 0;
 }
diff --git a/test/std/utilities/format/format.functions/formatted_size.locale.pass.cpp b/test/std/utilities/format/format.functions/formatted_size.locale.pass.cpp
index 26f6ef9..b31170b 100644
--- a/test/std/utilities/format/format.functions/formatted_size.locale.pass.cpp
+++ b/test/std/utilities/format/format.functions/formatted_size.locale.pass.cpp
@@ -54,10 +54,12 @@
 };
 
 int main(int, char**) {
-  format_tests_char_to_wchar_t(test);
-
   format_tests<char>(test, test_exception);
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+  format_tests_char_to_wchar_t(test);
   format_tests<wchar_t>(test, test_exception);
+#endif
 
   return 0;
 }
diff --git a/test/std/utilities/format/format.functions/formatted_size.pass.cpp b/test/std/utilities/format/format.functions/formatted_size.pass.cpp
index 3ba3776..befb4ce 100644
--- a/test/std/utilities/format/format.functions/formatted_size.pass.cpp
+++ b/test/std/utilities/format/format.functions/formatted_size.pass.cpp
@@ -51,10 +51,12 @@
 };
 
 int main(int, char**) {
-  format_tests_char_to_wchar_t(test);
-
   format_tests<char>(test, test_exception);
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+  format_tests_char_to_wchar_t(test);
   format_tests<wchar_t>(test, test_exception);
+#endif
 
   return 0;
 }
diff --git a/test/std/utilities/format/format.functions/locale-specific_form.pass.cpp b/test/std/utilities/format/format.functions/locale-specific_form.pass.cpp
index eda3723..2d660c6 100644
--- a/test/std/utilities/format/format.functions/locale-specific_form.pass.cpp
+++ b/test/std/utilities/format/format.functions/locale-specific_form.pass.cpp
@@ -105,6 +105,7 @@
   char do_thousands_sep() const override { return '_'; }
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 template <>
 struct numpunct<wchar_t> : std::numpunct<wchar_t> {
   string_type do_truename() const override { return L"yes"; }
@@ -113,6 +114,7 @@
   std::string do_grouping() const override { return "\1\2\3\2\1"; };
   wchar_t do_thousands_sep() const override { return L'_'; }
 };
+#endif
 
 template <class CharT, class... Args>
 void test(std::basic_string<CharT> expected, std::basic_string<CharT> fmt,
@@ -237,12 +239,14 @@
   string_type do_falsename() const override { return "ungültig"; }
 };
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
 template <>
 struct numpunct_unicode<wchar_t> : std::numpunct<wchar_t> {
   string_type do_truename() const override { return L"gültig"; }
   string_type do_falsename() const override { return L"ungültig"; }
 };
 #endif
+#endif // _LIBCPP_HAS_NO_UNICODE
 
 template <class CharT>
 void test_bool() {
@@ -613,7 +617,9 @@
 
 int main(int, char**) {
   test<char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   test<wchar_t>();
+#endif
 
   return 0;
 }
diff --git a/test/std/utilities/format/format.functions/vformat.locale.pass.cpp b/test/std/utilities/format/format.functions/vformat.locale.pass.cpp
index 5a0fcab..08e067e 100644
--- a/test/std/utilities/format/format.functions/vformat.locale.pass.cpp
+++ b/test/std/utilities/format/format.functions/vformat.locale.pass.cpp
@@ -58,10 +58,12 @@
 };
 
 int main(int, char**) {
-  format_tests_char_to_wchar_t(test);
-
   format_tests<char>(test, test_exception);
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+  format_tests_char_to_wchar_t(test);
   format_tests<wchar_t>(test, test_exception);
+#endif
 
   return 0;
 }
diff --git a/test/std/utilities/format/format.functions/vformat.pass.cpp b/test/std/utilities/format/format.functions/vformat.pass.cpp
index b1e7025..c4df0a8 100644
--- a/test/std/utilities/format/format.functions/vformat.pass.cpp
+++ b/test/std/utilities/format/format.functions/vformat.pass.cpp
@@ -55,10 +55,12 @@
 };
 
 int main(int, char**) {
-  format_tests_char_to_wchar_t(test);
-
   format_tests<char>(test, test_exception);
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+  format_tests_char_to_wchar_t(test);
   format_tests<wchar_t>(test, test_exception);
+#endif
 
   return 0;
 }
diff --git a/test/std/utilities/format/format.functions/vformat_to.locale.pass.cpp b/test/std/utilities/format/format.functions/vformat_to.locale.pass.cpp
index a006a2b..5a57adf 100644
--- a/test/std/utilities/format/format.functions/vformat_to.locale.pass.cpp
+++ b/test/std/utilities/format/format.functions/vformat_to.locale.pass.cpp
@@ -97,10 +97,12 @@
 };
 
 int main(int, char**) {
-  format_tests_char_to_wchar_t(test);
-
   format_tests<char>(test, test_exception);
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+  format_tests_char_to_wchar_t(test);
   format_tests<wchar_t>(test, test_exception);
+#endif
 
   return 0;
 }
diff --git a/test/std/utilities/format/format.functions/vformat_to.pass.cpp b/test/std/utilities/format/format.functions/vformat_to.pass.cpp
index 1c243e6..1deca0d 100644
--- a/test/std/utilities/format/format.functions/vformat_to.pass.cpp
+++ b/test/std/utilities/format/format.functions/vformat_to.pass.cpp
@@ -100,10 +100,12 @@
 };
 
 int main(int, char**) {
-  format_tests_char_to_wchar_t(test);
-
   format_tests<char>(test, test_exception);
+
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+  format_tests_char_to_wchar_t(test);
   format_tests<wchar_t>(test, test_exception);
+#endif
 
   return 0;
 }
diff --git a/test/std/utilities/function.objects/unord.hash/integral.pass.cpp b/test/std/utilities/function.objects/unord.hash/integral.pass.cpp
index 031aa30..4168b16 100644
--- a/test/std/utilities/function.objects/unord.hash/integral.pass.cpp
+++ b/test/std/utilities/function.objects/unord.hash/integral.pass.cpp
@@ -58,7 +58,9 @@
     test<unsigned char>();
     test<char16_t>();
     test<char32_t>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<wchar_t>();
+#endif
     test<short>();
     test<unsigned short>();
     test<int>();
diff --git a/test/std/utilities/template.bitset/bitset.members/to_string.pass.cpp b/test/std/utilities/template.bitset/bitset.members/to_string.pass.cpp
index 0f364ec..2ad9c2d 100644
--- a/test/std/utilities/template.bitset/bitset.members/to_string.pass.cpp
+++ b/test/std/utilities/template.bitset/bitset.members/to_string.pass.cpp
@@ -47,6 +47,7 @@
     std::vector<std::bitset<N> > const cases = get_test_cases<N>();
     for (std::size_t c = 0; c != cases.size(); ++c) {
         std::bitset<N> const v = cases[c];
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         {
             std::wstring s = v.template to_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >();
             check_equal(s, v, L'0', L'1');
@@ -55,6 +56,7 @@
             std::wstring s = v.template to_string<wchar_t, std::char_traits<wchar_t> >();
             check_equal(s, v, L'0', L'1');
         }
+#endif
         {
             std::string s = v.template to_string<char>();
             check_equal(s, v, '0', '1');
@@ -63,6 +65,7 @@
             std::string s = v.to_string();
             check_equal(s, v, '0', '1');
         }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         {
             std::wstring s = v.template to_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >('0');
             check_equal(s, v, L'0', L'1');
@@ -71,6 +74,7 @@
             std::wstring s = v.template to_string<wchar_t, std::char_traits<wchar_t> >('0');
             check_equal(s, v, L'0', L'1');
         }
+#endif
         {
             std::string s = v.template to_string<char>('0');
             check_equal(s, v, '0', '1');
@@ -79,6 +83,7 @@
             std::string s = v.to_string('0');
             check_equal(s, v, '0', '1');
         }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
         {
             std::wstring s = v.template to_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >('0', '1');
             check_equal(s, v, L'0', L'1');
@@ -87,6 +92,7 @@
             std::wstring s = v.template to_string<wchar_t, std::char_traits<wchar_t> >('0', '1');
             check_equal(s, v, L'0', L'1');
         }
+#endif
         {
             std::string s = v.template to_string<char>('0', '1');
             check_equal(s, v, '0', '1');
diff --git a/test/std/utilities/template.bitset/includes.pass.cpp b/test/std/utilities/template.bitset/includes.pass.cpp
index 43d9e08..b58dac5 100644
--- a/test/std/utilities/template.bitset/includes.pass.cpp
+++ b/test/std/utilities/template.bitset/includes.pass.cpp
@@ -21,7 +21,6 @@
   }
   { // test for <iosfwd>
     test_typedef<std::ios>();
-    test_typedef<std::wios>();
     test_typedef<std::istream>();
     test_typedef<std::ostream>();
     test_typedef<std::iostream>();
diff --git a/test/std/utilities/utility/utility.intcmp/intcmp.fail.cpp b/test/std/utilities/utility/utility.intcmp/intcmp.fail.cpp
index b5d68c8..66e35ad 100644
--- a/test/std/utilities/utility/utility.intcmp/intcmp.fail.cpp
+++ b/test/std/utilities/utility/utility.intcmp/intcmp.fail.cpp
@@ -51,83 +51,85 @@
 
 template <class T>
 constexpr void test() {
-  std::cmp_equal(T(), T()); // expected-error11{{no matching function for call to 'cmp_equal'}}
-  std::cmp_equal(T(), int()); // expected-error11{{no matching function for call to 'cmp_equal'}}
-  std::cmp_equal(int(), T()); // expected-error11{{no matching function for call to 'cmp_equal'}}
-  std::cmp_not_equal(T(), T()); // expected-error11{{no matching function for call to 'cmp_not_equal'}}
-  std::cmp_not_equal(T(), int()); // expected-error11{{no matching function for call to 'cmp_not_equal'}}
-  std::cmp_not_equal(int(), T()); // expected-error11{{no matching function for call to 'cmp_not_equal'}}
-  std::cmp_less(T(), T()); // expected-error11{{no matching function for call to 'cmp_less'}}
-  std::cmp_less(T(), int()); // expected-error11{{no matching function for call to 'cmp_less'}}
-  std::cmp_less(int(), T()); // expected-error11{{no matching function for call to 'cmp_less'}}
-  std::cmp_less_equal(T(), T()); // expected-error11{{no matching function for call to 'cmp_less_equal'}}
-  std::cmp_less_equal(T(), int()); // expected-error11{{no matching function for call to 'cmp_less_equal'}}
-  std::cmp_less_equal(int(), T()); // expected-error11{{no matching function for call to 'cmp_less_equal'}}
-  std::cmp_greater(T(), T()); // expected-error11{{no matching function for call to 'cmp_greater'}}
-  std::cmp_greater(T(), int()); // expected-error11{{no matching function for call to 'cmp_greater'}}
-  std::cmp_greater(int(), T()); // expected-error11{{no matching function for call to 'cmp_greater'}}
-  std::cmp_greater_equal(T(), T()); // expected-error11{{no matching function for call to 'cmp_greater_equal'}}
-  std::cmp_greater_equal(T(), int()); // expected-error11{{no matching function for call to 'cmp_greater_equal'}}
-  std::cmp_greater_equal(int(), T()); // expected-error11{{no matching function for call to 'cmp_greater_equal'}}
-  std::in_range<T>(int()); // expected-error11{{no matching function for call to 'in_range'}}
-  std::in_range<int>(T()); // expected-error11{{no matching function for call to 'in_range'}}
+  std::cmp_equal(T(), T()); // expected-error 10-11 {{no matching function for call to 'cmp_equal'}}
+  std::cmp_equal(T(), int()); // expected-error 10-11 {{no matching function for call to 'cmp_equal'}}
+  std::cmp_equal(int(), T()); // expected-error 10-11 {{no matching function for call to 'cmp_equal'}}
+  std::cmp_not_equal(T(), T()); // expected-error 10-11 {{no matching function for call to 'cmp_not_equal'}}
+  std::cmp_not_equal(T(), int()); // expected-error 10-11 {{no matching function for call to 'cmp_not_equal'}}
+  std::cmp_not_equal(int(), T()); // expected-error 10-11 {{no matching function for call to 'cmp_not_equal'}}
+  std::cmp_less(T(), T()); // expected-error 10-11 {{no matching function for call to 'cmp_less'}}
+  std::cmp_less(T(), int()); // expected-error 10-11 {{no matching function for call to 'cmp_less'}}
+  std::cmp_less(int(), T()); // expected-error 10-11 {{no matching function for call to 'cmp_less'}}
+  std::cmp_less_equal(T(), T()); // expected-error 10-11 {{no matching function for call to 'cmp_less_equal'}}
+  std::cmp_less_equal(T(), int()); // expected-error 10-11 {{no matching function for call to 'cmp_less_equal'}}
+  std::cmp_less_equal(int(), T()); // expected-error 10-11 {{no matching function for call to 'cmp_less_equal'}}
+  std::cmp_greater(T(), T()); // expected-error 10-11 {{no matching function for call to 'cmp_greater'}}
+  std::cmp_greater(T(), int()); // expected-error 10-11 {{no matching function for call to 'cmp_greater'}}
+  std::cmp_greater(int(), T()); // expected-error 10-11 {{no matching function for call to 'cmp_greater'}}
+  std::cmp_greater_equal(T(), T()); // expected-error 10-11 {{no matching function for call to 'cmp_greater_equal'}}
+  std::cmp_greater_equal(T(), int()); // expected-error 10-11 {{no matching function for call to 'cmp_greater_equal'}}
+  std::cmp_greater_equal(int(), T()); // expected-error 10-11 {{no matching function for call to 'cmp_greater_equal'}}
+  std::in_range<T>(int()); // expected-error 10-11 {{no matching function for call to 'in_range'}}
+  std::in_range<int>(T()); // expected-error 10-11 {{no matching function for call to 'in_range'}}
 }
 #ifndef _LIBCPP_HAS_NO_CHAR8_T
 template <class T>
 constexpr void test_char8t() {
-  std::cmp_equal(T(), T()); // expected-error1{{no matching function for call to 'cmp_equal'}}
-  std::cmp_equal(T(), int()); // expected-error1{{no matching function for call to 'cmp_equal'}}
-  std::cmp_equal(int(), T()); // expected-error1{{no matching function for call to 'cmp_equal'}}
-  std::cmp_not_equal(T(), T()); // expected-error1{{no matching function for call to 'cmp_not_equal'}}
-  std::cmp_not_equal(T(), int()); // expected-error1{{no matching function for call to 'cmp_not_equal'}}
-  std::cmp_not_equal(int(), T()); // expected-error1{{no matching function for call to 'cmp_not_equal'}}
-  std::cmp_less(T(), T()); // expected-error1{{no matching function for call to 'cmp_less'}}
-  std::cmp_less(T(), int()); // expected-error1{{no matching function for call to 'cmp_less'}}
-  std::cmp_less(int(), T()); // expected-error1{{no matching function for call to 'cmp_less'}}
-  std::cmp_less_equal(T(), T()); // expected-error1{{no matching function for call to 'cmp_less_equal'}}
-  std::cmp_less_equal(T(), int()); // expected-error1{{no matching function for call to 'cmp_less_equal'}}
-  std::cmp_less_equal(int(), T()); // expected-error1{{no matching function for call to 'cmp_less_equal'}}
-  std::cmp_greater(T(), T()); // expected-error1{{no matching function for call to 'cmp_greater'}}
-  std::cmp_greater(T(), int()); // expected-error1{{no matching function for call to 'cmp_greater'}}
-  std::cmp_greater(int(), T()); // expected-error1{{no matching function for call to 'cmp_greater'}}
-  std::cmp_greater_equal(T(), T()); // expected-error1{{no matching function for call to 'cmp_greater_equal'}}
-  std::cmp_greater_equal(T(), int()); // expected-error1{{no matching function for call to 'cmp_greater_equal'}}
-  std::cmp_greater_equal(int(), T()); // expected-error1{{no matching function for call to 'cmp_greater_equal'}}
-  std::in_range<T>(int()); // expected-error1{{no matching function for call to 'in_range'}}
-  std::in_range<int>(T()); // expected-error1{{no matching function for call to 'in_range'}}
+  std::cmp_equal(T(), T()); // expected-error 1 {{no matching function for call to 'cmp_equal'}}
+  std::cmp_equal(T(), int()); // expected-error 1 {{no matching function for call to 'cmp_equal'}}
+  std::cmp_equal(int(), T()); // expected-error 1 {{no matching function for call to 'cmp_equal'}}
+  std::cmp_not_equal(T(), T()); // expected-error 1 {{no matching function for call to 'cmp_not_equal'}}
+  std::cmp_not_equal(T(), int()); // expected-error 1 {{no matching function for call to 'cmp_not_equal'}}
+  std::cmp_not_equal(int(), T()); // expected-error 1 {{no matching function for call to 'cmp_not_equal'}}
+  std::cmp_less(T(), T()); // expected-error 1 {{no matching function for call to 'cmp_less'}}
+  std::cmp_less(T(), int()); // expected-error 1 {{no matching function for call to 'cmp_less'}}
+  std::cmp_less(int(), T()); // expected-error 1 {{no matching function for call to 'cmp_less'}}
+  std::cmp_less_equal(T(), T()); // expected-error 1 {{no matching function for call to 'cmp_less_equal'}}
+  std::cmp_less_equal(T(), int()); // expected-error 1 {{no matching function for call to 'cmp_less_equal'}}
+  std::cmp_less_equal(int(), T()); // expected-error 1 {{no matching function for call to 'cmp_less_equal'}}
+  std::cmp_greater(T(), T()); // expected-error 1 {{no matching function for call to 'cmp_greater'}}
+  std::cmp_greater(T(), int()); // expected-error 1 {{no matching function for call to 'cmp_greater'}}
+  std::cmp_greater(int(), T()); // expected-error 1 {{no matching function for call to 'cmp_greater'}}
+  std::cmp_greater_equal(T(), T()); // expected-error 1 {{no matching function for call to 'cmp_greater_equal'}}
+  std::cmp_greater_equal(T(), int()); // expected-error 1 {{no matching function for call to 'cmp_greater_equal'}}
+  std::cmp_greater_equal(int(), T()); // expected-error 1 {{no matching function for call to 'cmp_greater_equal'}}
+  std::in_range<T>(int()); // expected-error 1 {{no matching function for call to 'in_range'}}
+  std::in_range<int>(T()); // expected-error 1 {{no matching function for call to 'in_range'}}
 }
 #endif // _LIBCPP_HAS_NO_CHAR8_T
 
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
 template <class T>
 constexpr void test_uchars() {
-  std::cmp_equal(T(), T()); // expected-error2{{no matching function for call to 'cmp_equal'}}
-  std::cmp_equal(T(), int()); // expected-error2{{no matching function for call to 'cmp_equal'}}
-  std::cmp_equal(int(), T()); // expected-error2{{no matching function for call to 'cmp_equal'}}
-  std::cmp_not_equal(T(), T()); // expected-error2{{no matching function for call to 'cmp_not_equal'}}
-  std::cmp_not_equal(T(), int()); // expected-error2{{no matching function for call to 'cmp_not_equal'}}
-  std::cmp_not_equal(int(), T()); // expected-error2{{no matching function for call to 'cmp_not_equal'}}
-  std::cmp_less(T(), T()); // expected-error2{{no matching function for call to 'cmp_less'}}
-  std::cmp_less(T(), int()); // expected-error2{{no matching function for call to 'cmp_less'}}
-  std::cmp_less(int(), T()); // expected-error2{{no matching function for call to 'cmp_less'}}
-  std::cmp_less_equal(T(), T()); // expected-error2{{no matching function for call to 'cmp_less_equal'}}
-  std::cmp_less_equal(T(), int()); // expected-error2{{no matching function for call to 'cmp_less_equal'}}
-  std::cmp_less_equal(int(), T()); // expected-error2{{no matching function for call to 'cmp_less_equal'}}
-  std::cmp_greater(T(), T()); // expected-error2{{no matching function for call to 'cmp_greater'}}
-  std::cmp_greater(T(), int()); // expected-error2{{no matching function for call to 'cmp_greater'}}
-  std::cmp_greater(int(), T()); // expected-error2{{no matching function for call to 'cmp_greater'}}
-  std::cmp_greater_equal(T(), T()); // expected-error2{{no matching function for call to 'cmp_greater_equal'}}
-  std::cmp_greater_equal(T(), int()); // expected-error2{{no matching function for call to 'cmp_greater_equal'}}
-  std::cmp_greater_equal(int(), T()); // expected-error2{{no matching function for call to 'cmp_greater_equal'}}
-  std::in_range<T>(int()); // expected-error2{{no matching function for call to 'in_range'}}
-  std::in_range<int>(T()); // expected-error2{{no matching function for call to 'in_range'}}
+  std::cmp_equal(T(), T()); // expected-error 2 {{no matching function for call to 'cmp_equal'}}
+  std::cmp_equal(T(), int()); // expected-error 2 {{no matching function for call to 'cmp_equal'}}
+  std::cmp_equal(int(), T()); // expected-error 2 {{no matching function for call to 'cmp_equal'}}
+  std::cmp_not_equal(T(), T()); // expected-error 2 {{no matching function for call to 'cmp_not_equal'}}
+  std::cmp_not_equal(T(), int()); // expected-error 2 {{no matching function for call to 'cmp_not_equal'}}
+  std::cmp_not_equal(int(), T()); // expected-error 2 {{no matching function for call to 'cmp_not_equal'}}
+  std::cmp_less(T(), T()); // expected-error 2 {{no matching function for call to 'cmp_less'}}
+  std::cmp_less(T(), int()); // expected-error 2 {{no matching function for call to 'cmp_less'}}
+  std::cmp_less(int(), T()); // expected-error 2 {{no matching function for call to 'cmp_less'}}
+  std::cmp_less_equal(T(), T()); // expected-error 2 {{no matching function for call to 'cmp_less_equal'}}
+  std::cmp_less_equal(T(), int()); // expected-error 2 {{no matching function for call to 'cmp_less_equal'}}
+  std::cmp_less_equal(int(), T()); // expected-error 2 {{no matching function for call to 'cmp_less_equal'}}
+  std::cmp_greater(T(), T()); // expected-error 2 {{no matching function for call to 'cmp_greater'}}
+  std::cmp_greater(T(), int()); // expected-error 2 {{no matching function for call to 'cmp_greater'}}
+  std::cmp_greater(int(), T()); // expected-error 2 {{no matching function for call to 'cmp_greater'}}
+  std::cmp_greater_equal(T(), T()); // expected-error 2 {{no matching function for call to 'cmp_greater_equal'}}
+  std::cmp_greater_equal(T(), int()); // expected-error 2 {{no matching function for call to 'cmp_greater_equal'}}
+  std::cmp_greater_equal(int(), T()); // expected-error 2 {{no matching function for call to 'cmp_greater_equal'}}
+  std::in_range<T>(int()); // expected-error 2 {{no matching function for call to 'in_range'}}
+  std::in_range<int>(T()); // expected-error 2 {{no matching function for call to 'in_range'}}
 }
 #endif // _LIBCPP_HAS_NO_UNICODE_CHARS
 
 int main() {
   test<bool>();
   test<char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   test<wchar_t>();
+#endif
   test<float>();
   test<double>();
   test<long double>();
diff --git a/test/support/make_string.h b/test/support/make_string.h
index 1ff3dc4..d417d7e 100644
--- a/test/support/make_string.h
+++ b/test/support/make_string.h
@@ -24,16 +24,24 @@
 #define CHAR8_ONLY(x)
 #endif
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+# define IF_WIDE_CHARACTERS(...) __VA_ARGS__
+#else
+# define IF_WIDE_CHARACTERS(...) /* nothing */
+#endif
+
 #define MKSTR(Str)                                                             \
   {                                                                            \
-    Str, TEST_CONCAT(L, Str),                                                  \
+    Str, IF_WIDE_CHARACTERS(TEST_CONCAT(L, Str),)                              \
         CHAR8_ONLY(TEST_CONCAT(u8, Str)) TEST_CONCAT(u, Str),                  \
         TEST_CONCAT(U, Str)                                                    \
   }
 
 struct MultiStringType {
   const char* s;
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   const wchar_t* w;
+#endif
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
   const char8_t* u8;
 #endif
@@ -41,7 +49,9 @@
   const char32_t* u32;
 
   constexpr operator const char*() const { return s; }
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   constexpr operator const wchar_t*() const { return w; }
+#endif
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
   constexpr operator const char8_t*() const { return u8; }
 #endif
diff --git a/test/support/poisoned_hash_helper.h b/test/support/poisoned_hash_helper.h
index fbd35ca..bb4b70b 100644
--- a/test/support/poisoned_hash_helper.h
+++ b/test/support/poisoned_hash_helper.h
@@ -57,7 +57,9 @@
       char,
       signed char,
       unsigned char,
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
       wchar_t,
+#endif
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
       char16_t,
       char32_t,
diff --git a/test/support/test.support/make_string_header.pass.cpp b/test/support/test.support/make_string_header.pass.cpp
index c35cc52..63c9149 100644
--- a/test/support/test.support/make_string_header.pass.cpp
+++ b/test/support/test.support/make_string_header.pass.cpp
@@ -23,11 +23,13 @@
     ==   " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMN"
              "OPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~");
 
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
   assert(MAKE_STRING(wchar_t,
          " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMN"
              "OPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~")
     ==  L" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMN"
              "OPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~");
+#endif
 #ifndef _LIBCPP_HAS_NO_CHAR8_T
   assert(MAKE_STRING(char8_t,
          " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMN"
diff --git a/test/support/test_macros.h b/test/support/test_macros.h
index feb6e8a..53fb990 100644
--- a/test/support/test_macros.h
+++ b/test/support/test_macros.h
@@ -348,6 +348,11 @@
 #define TEST_WIN_NO_FILESYSTEM_PERMS_NONE
 #endif
 
+// Support for carving out parts of the test suite, like removing wide characters, etc.
+#if defined(_LIBCPP_HAS_NO_WIDE_CHARACTERS)
+#   define TEST_HAS_NO_WIDE_CHARACTERS
+#endif
+
 #if defined(__GNUC__)
 #pragma GCC diagnostic pop
 #endif
diff --git a/utils/ci/buildkite-pipeline.yml b/utils/ci/buildkite-pipeline.yml
index 08b4d3c..67b5525 100644
--- a/utils/ci/buildkite-pipeline.yml
+++ b/utils/ci/buildkite-pipeline.yml
@@ -465,6 +465,19 @@
           limit: 2
     timeout_in_minutes: 120
 
+  - label: "No wide characters"
+    command: "libcxx/utils/ci/run-buildbot generic-no-wide-characters"
+    artifact_paths:
+      - "**/test-results.xml"
+    agents:
+      queue: "libcxx-builders"
+      os: "linux"
+    retry:
+      automatic:
+        - exit_status: -1  # Agent was lost
+          limit: 2
+    timeout_in_minutes: 120
+
   # Other non-testing CI jobs
   - label: "Benchmarks"
     command: "libcxx/utils/ci/run-buildbot benchmarks"
diff --git a/utils/ci/run-buildbot b/utils/ci/run-buildbot
index a3e6b78..1a90a52 100755
--- a/utils/ci/run-buildbot
+++ b/utils/ci/run-buildbot
@@ -364,6 +364,12 @@
                    -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in"
     check-runtimes
 ;;
+generic-no-wide-characters)
+    clean
+    generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-wide-characters.cmake" \
+                   -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in"
+    check-runtimes
+;;
 x86_64-apple-system)
     clean
     generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Apple.cmake" \
diff --git a/utils/generate_header_tests.py b/utils/generate_header_tests.py
index e081914..19e7278 100755
--- a/utils/generate_header_tests.py
+++ b/utils/generate_header_tests.py
@@ -50,6 +50,11 @@
     "streambuf": ["ifndef _LIBCPP_HAS_NO_LOCALIZATION"],
     "strstream": ["ifndef _LIBCPP_HAS_NO_LOCALIZATION"],
 
+    "wctype.h": ["ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS"],
+    "cwctype": ["ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS"],
+    "cwchar": ["ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS"],
+    "wchar.h": ["ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS"],
+
     "experimental/coroutine": ["if defined(__cpp_coroutines)"],
     "experimental/regex": ["ifndef _LIBCPP_HAS_NO_LOCALIZATION"],
 }
diff --git a/utils/libcxx/test/features.py b/utils/libcxx/test/features.py
index 1204304..fe2aa14 100644
--- a/utils/libcxx/test/features.py
+++ b/utils/libcxx/test/features.py
@@ -100,6 +100,7 @@
   '_LIBCPP_HAS_NO_FILESYSTEM_LIBRARY': 'libcpp-has-no-filesystem-library',
   '_LIBCPP_HAS_NO_RANDOM_DEVICE': 'libcpp-has-no-random-device',
   '_LIBCPP_HAS_NO_LOCALIZATION': 'libcpp-has-no-localization',
+  '_LIBCPP_HAS_NO_WIDE_CHARACTERS': 'libcpp-has-no-wide-characters',
   '_LIBCPP_HAS_NO_INCOMPLETE_FORMAT': 'libcpp-has-no-incomplete-format',
   '_LIBCPP_HAS_NO_INCOMPLETE_RANGES': 'libcpp-has-no-incomplete-ranges',
   '_LIBCPP_HAS_NO_UNICODE': 'libcpp-has-no-unicode',
