<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/97601>97601</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[libc++] No library support for `char8_t` if compiled without C++20 but with `-fchar8_t`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
libc++
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
MitalAshok
</td>
</tr>
</table>
<pre>
Currently, `_LIBCPP_HAS_NO_CHAR8_T` is always defined if not compiled with `-std=c++20` or above:
https://github.com/llvm/llvm-project/blob/3ab2247d10673419609333a33bca0eca8a56bf3d/libcxx/include/__config#L702-L704
But both Clang and GCC allow `char8_t` in older standards with the `-fchar8_t` flag: https://godbolt.org/z/ePcrqvWsa
Someone specifying `-fchar8_t` presumably is going to use `char8_t` consistently even before C++20, so it makes sense to allow using library facilities for `char8_t`. One problem I can think of is that some names (like `u8string`) aren't reserved in C++17, but someone using `-fchar8_t` should know not to use them. Plus libstdc++ supports it.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUVE-PozYU_zTO5WkiY5IABw4JI7orTXdH3Uo9RjZ-gBtjp34ms-mnr0xmZ7Mzp14SCdk_fn-RRGZwiDXbHtj2cSXnOPpQ_26itHsa_WmlvL7WzRwCumivTDTAdvz49PnQPD8fP-2_Hb98PTaf9n-Uxz_ZjoMhkPZFXgk09sahBtOD8xE6P52NRQ0vJo4J44GiZvljx8SBiYPg6bYPIJW_IMv3jD8y_vo7xnim9Ey0TLSDieOs1p2fmGitvfz4ezgH_zd2kYlWWa-YaHOphNgUOuO7It9k1Y5XeZ7LPFed5NjJUm53qs91AjCq-_6dida4zs4amWiPx8673gxM5E8FFw9PBd_cszrMEZSPIzRWugGk0_Bb04C01r8kgd0oQ3mMiysOvNUYgKJ0WgZNNxviiIsV_d3Z3sqB5Xt4J9pr5W1c-zAw0f7LRIvPXfjn8hfJe07f_ITeIdAZO9NfjRs-4J8D0jxJZa8prMGnM9HDTPiOdOcdGYpL7oAXdKCw9wGheYtMNEAeTIRJnpCA0BEmsJsHMyVsa1SQ4Qq97Iw10SBB78Ov71rDV4dwDl5ZnOAzdNJBHI07ge8TyzjKCOQnBCcnJGCitOa0EJ5LisG4ge04ExXIgI6JIkJAwnBJ_XM_CGdFIqzmG1Sy6cbwvUM0-tlqODn_slT31Z044rSGZztT0kRRv1YXaD6ffYgEJq5vMax0nesqr-QK66wQnIt8s9muxhp1pUpRqLLrVaazaiuFyAstC73NENV2ZWrBxYYXPM92WSE2ay6qouK7Um7LTlaSsw3HSRq7TpVPdVgZohnrqtjxbGWlQkvLmoVInb5RZEKkdYd62YmaB2Ibbg1F-gkTTbTLd-Du2vYRvvi3BF91fowvbfyXffs5_mzJ4vjb6u-MXs3B1v9724tcYqK9Kb7U4r8AAAD__7ZXgwM">