<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/106460>106460</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[libc++] std::regex_constants::ECMAScript mask not set
</td>
</tr>
<tr>
<th>Labels</th>
<td>
libc++
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
androm3da
</td>
</tr>
</table>
<pre>
This program fails with libc++ and passes for libstdc++. Is this the expected behavior?
```
#include <stdlib.h>
#include <regex>
#include <iostream>
using namespace std::regex_constants;
bool check(syntax_option_type a) {
auto q = basic & (~basic);
auto orig = a;
if (a == q) {
return false;
}
a &= ~q;
if (a != orig) {
return false;
}
return true;
}
int main() {
if (!check(std::regex_constants::collate)) {
std::cerr << "fail 'collate'\n";
exit(1);
}
if (std::regex_constants::ECMAScript == (icase & (~icase))) {
std::cerr << "Hmmm....\n";
}
if (!check(std::regex_constants::ECMAScript)) {
std::cerr << "fail 'ECMAScript'\n";
exit(1);
}
}
```
Context:
```
$ clang++ ~/tmp/reg_const_ecma.cpp -stdlib=libc++ -std=c++20 && ./a.out ; echo $?
Hmmm....
fail 'ECMAScript'
1
$ clang++ ~/tmp/reg_const_ecma.cpp -std=c++20 && ./a.out ; echo $?
0
$ clang++ --version
clang version 18.1.8
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /local/mnt/workspace/install/clang-latest/bin
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycVU1zozgQ_TXtiwoKJPN14JDEQ-0c9rRzTwnRAW2ERCSROJf89i0BY3ucZGonlEsu8bpbr183Le6c7DViDdktZIcdn_1gbM11Z83IOr5rTfda_xikI5M1veUjeeBSOfIi_UCUbAXQW6C3hOuOTNw5dOTB2IA4321gTMh3R3wI4gckeJxQeOxIiwN_lsYCayA5QHKzrXmy_dYtZVILNXdIgN053ynZxgOwbx_BFns8foJJ47xFPp7hZZ2d1D3RfEQ3cYHE-Q7YDbCbJda9MNp5rr0Ddnvp1hqjiBhQPAIt3av2_HhvJi-NvvevExIOtCJQbD6E8Nkb8kSAHUjLnRQEaE6Alm_LDmh1ir_ZGiv7xZxfIPIh-PDwPkBPV4eEx6KfrSYPXDm88ITicAofzg7ub08fhaZpwMLxX4q-WXg7nw1O8LpK7cnIpQZaXh2xkgCanpT9tBrhpTBKcY9BvfdUT64CrQ0NAOyOAKWhgQnQ4uRcQHangdKLfMKDR-mBlumvtbnIdCX7e4bf7v6--UdYOfmfNQNaSsEdnhpg2a0p_EEWf43jGMdx_J77O4b_W84z2a8peun_J6Ke2-PXPrmeBMt6Z7THow9EPh4XeyIU1_02mN6ANn6cgDYW-zXhexQjj8U0kWgdJ8AOF6MsWtI8bFuaLF8LzUkMtOGxmUMlbwmKwRCg-9PwOhVk2X0syQKlXyT6BU6faBJFz2idNHqFF4hsr0haxmlcrsgPbnsMUpNjmd_n-2jWj9q86EhJPR-jXs-b3WCRd2Q0HapgPRknjyv0PXSYUtgdpA0Q0EYZwRXQZtQeaPNi7OMyeYE2cjUG2iycovB9umDUSn1V7V1Xs65iFd9hnRZ0X5ZpmmW7od6ztiowqwRjRVlhVaSseEgYlnmRtTkrdrKmCd0nJS1pyqo0izFLiqIoRSEqlucJwj7BkUsVK_U8xsb2O-ncjHWa5Ps82SneonLLjUnpuW9Cr2eHna2DV9TOvYN9oqTz7hzHS6-Wu_bCLTv85sq5GiEjd49EG08c-t1sVT14Py1mtAHa9NIPcxsLMwaV1fPPv2iy5l8UQcglEwe02ZJ5rul_AQAA__9FTkAr">