2
0
mirror of https://github.com/boostorg/locale.git synced 2026-01-19 04:22:08 +00:00
Files
locale/doc/status_of_cpp0x_characters_support.txt
Alexander Grund ee460ca45e Improve docs
2025-10-25 20:09:03 +02:00

37 lines
1.7 KiB
Plaintext

//
// Copyright (c) 2009-2011 Artyom Beilis (Tonkikh)
//
// Distributed under the Boost Software License, Version 1.0.
// https://www.boost.org/LICENSE_1_0.txt
/*!
\page status_of_cpp0x_characters_support Status of C++11 char16_t/char32_t support
The support of C++11 \c char16_t and \c char32_t is experimental and is not
intended to be used in production until various compiler/standard library flaws are fixed.
Many recent C++ compilers provide decent support of C++11 characters, however often:
-# The standard library does not install any std::locale::facets for this support so any attempt
to format numbers using \c char16_t or \c char32_t streams would just fail.
-# The standard library misses specialization for required \c char16_t/char32_t locale facets,
so "std" backends is not build-able as essential symbols missing, also \c codecvt facet
can't be created as well.
\section status_of_cpp0x_characters_support_msvc Visual Studio
MSVC provides all required facets since VS 2010 however:
-# The standard library does not provide installations of std::locale::id for these facets
in DLL so it is not usable with \c /MD, \c /MDd compiler flags and requires static link of the runtime
library.
-# \c char16_t and \c char32_t are not distinct types but rather aliases of unsigned short and unsigned
types which contradicts to C++11 requirements making it impossible to write \c char16_t/char32_t to stream
and causing multiple faults.
If you want to build or test Boost.Locale with C++11 char16_t and char32_t support
you should pass `define=BOOST_LOCALE_ENABLE_CHAR32_T define=BOOST_LOCALE_ENABLE_CHAR16_T` to `b2` during build and define `BOOST_LOCALE_ENABLE_CHAR32_T` and `BOOST_LOCALE_ENABLE_CHAR32_T` when using Boost.Locale
*/