We don't need to have <wchar.h> support in order to delete overloads for inserting wide characters into narrow streams.
libstdc++-v3/ChangeLog: PR libstdc++/98725 * include/std/ostream (operator<<(basic_ostream<char, Tr>&, wchar_t)) (operator<<(basic_ostream<char, Tr>&, const wchar_t*)): Always define as deleted. Do not check _GLIBCXX_USE_WCHAR_T. --- libstdc++-v3/include/std/ostream | 4 ---- 1 file changed, 4 deletions(-) diff --git a/libstdc++-v3/include/std/ostream b/libstdc++-v3/include/std/ostream index 7d39c5706d5..4d7b9b4ef0b 100644 --- a/libstdc++-v3/include/std/ostream +++ b/libstdc++-v3/include/std/ostream @@ -533,11 +533,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // The following deleted overloads prevent formatting character values as // numeric values. -#ifdef _GLIBCXX_USE_WCHAR_T template<typename _Traits> basic_ostream<char, _Traits>& operator<<(basic_ostream<char, _Traits>&, wchar_t) = delete; -#endif // _GLIBCXX_USE_WCHAR_T #ifdef _GLIBCXX_USE_CHAR8_T template<typename _Traits> @@ -629,11 +627,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // The following deleted overloads prevent formatting strings as // pointer values. -#ifdef _GLIBCXX_USE_WCHAR_T template<typename _Traits> basic_ostream<char, _Traits>& operator<<(basic_ostream<char, _Traits>&, const wchar_t*) = delete; -#endif // _GLIBCXX_USE_WCHAR_T #ifdef _GLIBCXX_USE_CHAR8_T template<typename _Traits> -- 2.31.1