This patch provides implementations for the mbrtoc8 and c8rtomb functions adopted for C++20 via WG21 P0482R6 [1] and proposed for C2X via WG14 N2653 [2]. It also provides the char8_t typedef from WG14 N2653 [2]. The mbrtoc8 and c8rtomb functions are declared in uchar.h if either of the C++20 __cpp_char8_t or _GNU_SOURCE feature test macros are defined. The char8_t typedef is declared in uchar.h if _GNU_SOURCE is defined and __cpp_char8_t is not defined (if __cpp_char8_t is defined, then char8_t is a builtin type). Tested on Linux x86_64. Tom. [1]: WG21 P0482R6 "char8_t: A type for UTF-8 characters and strings (Revision 6)" https://wg21.link/p0482r6 [2]: WG14 N2653 "char8_t: A type for UTF-8 characters and strings (Revision 1)" http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2653.htm