<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/144829>144829</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[libc++] `std::locale(named, unnamed, std::locale::none)` should obtain its name from `named`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
libc++
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
cpplearner
</td>
</tr>
</table>
<pre>
Reduced from [`libcxx/test/std/localization/locales/locale/locale.cons/name_construction.pass.cpp`](https://github.com/llvm/llvm-project/blob/351303c28e8feb85c93d8e9480f534653b032735/libcxx/test/std/localization/locales/locale/locale.cons/name_construction.pass.cpp):
```c++
#include <iostream>
#include <locale>
constexpr auto LOCALE_en_US_UTF_8 = "en_US.UTF-8";
int main(int, char**) {
std::locale en(LOCALE_en_US_UTF_8);
std::locale unnamed(std::locale(), new std::ctype<char>);
{
std::locale loc(en, unnamed, std::locale::none);
std::cout << loc.name() << '\n';
}
return 0;
}
```
Both libstdc++ and MSVC's STL print "en_US.UTF-8" for `loc.name()`, but libc++ prints "*".
I think this can be fixed by swapping the two conditions in `build_name`.
https://github.com/llvm/llvm-project/blob/351303c28e8feb85c93d8e9480f534653b032735/libcxx/src/locale.cpp#L101-L110
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy8VEFv6zYM_jX0haghi7ZjH3xInQYYkGHA2u4ayLISa3MkQ5Jf2_36QU6avLYbsB32ACFmJPH7PpIihff6aJRqoLiHYpOIOQzWNXKaRiWcUS7pbP_W_Kr6WaoeD86eMF4t2ag7-foKfBuUD8C3PvTAt6OVYtR_iqCtef-r_NW6Gqm0Jm4bcVL7aAc3y-iUTsL7VE4TlAyKDfBqCGHyQGvgW-Dbow7D3KXSniLW-O39czc5-7uSUUk32g74loqMGEleqeqguqqQNfWVqvOKHQrKy4I6RnxFRQT4v2PhdQyALatk5yWB38fF1sBJGznOvUKgVlsfnBInoIcvZxfm8wlbL2TqdXIo5mBx90u73j3sldk_P-6fn7b7CoE2CJwvW-nz0_auAs6BIqs2AU9CG-CVNgF4i3IQDvh6WTXCKt5CRIzpoDXQ-kyPKvp8JVui_Cef2cT09MCrTyfAF0feolEvNzcZ3iYF1C6a6OGKfYG_ifs7stFK4FWU2d6I28_XzraxRn1Q_gFQ2jnExAO1ETWNWGfF77vAV1C0Jn6uELDaRMupMDuD7KJ82byW_xzLvQ0Djrrzob-8BxSmx58ff2uBrzw-Pu1wcrFUX6qIB-swNuIHWRGZt9jNIcK-Yy4QPmIsxeXpmf0nDIM2f8Rfj1IY7BQe9KvqsXtD_yKmSZsjhkFheLEorel1fNcetYnM3azHfr9wl-wC-SO71Tv5XRPGNqNdxrK7XZaxpG-or6kWiWqyVcGIUUWUDA2xSmVCCcEo61Y5E4pkX9CqzjtW8ZwS3XDGC1ZmNSNiRKmK7v2qrOsso7wgyJk6CT2mMZLUumOivZ9Vk-V5xetkFJ0a_TJQOb_VIOa-2CSuWeLv5qOHnI3aB3_DCTqMyyj-zq3YxFR_bZrrq_63D7xk6Ac7jz3aLghtUAeP0fUy1Ut2xilZMrux-c-FXJIQ5-AlD98a_lcAAAD__7GQ5uw">