<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/103019>103019</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Clang does not recognize(use) constexpr features
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
socketpair
</td>
</tr>
</table>
<pre>
```cpp
#include <algorithm>
#include <array>
#include <string_view>
using namespace std;
int main1() {
constexpr array<string_view, 2> x{{"name1", "name2"}};
constexpr auto f1 = find(x.cbegin(), x.cend(), "name1") - x.cbegin();
constexpr auto f2 = find(x.cbegin(), x.cend(), "name2") - x.cbegin();
return f1 + f2;
}
int main2() {
array<string_view, 2> x{{"name1", "name2"}};
auto f1 = find(x.cbegin(), x.cend(), "name1") - x.cbegin();
auto f2 = find(x.cbegin(), x.cend(), "name2") - x.cbegin();
return f1 + f2;
}
```
`-std=c++23 -O3 -Wall -Wextra`
https://godbolt.org/z/vxsMEcWx9
As you can see, gcc is smarter.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMlMGOozgQhp-muJQSmTIJcODQ6XRuqz32cWVMhXjX2Mg2WbqffkQ6o3S3MjPSaEYayQKVqv76yj_YKkbTO-YGNjvY7DM1pZMPTfT6P06jMiFrfffSwFa8LT2OIPYgHoCkcdpOHSPIR2V7H0w6DSCf7uZDUC_fyMUUjOv_ORv-_1ZxeU7RuB6dGjiOSjPG1IHcva8wLuGgjMuBKqAaobymERG1dzHxPAa84j-g6BEJ5BPOi6bcAdECyoFoSV1DWsJyvyx5v_OUPB5zBLnHo3EdUDWvdcu9cW8jLc3mteZL6hp_YNW4wk-S76Hop1D0I9QNGDhNwV32RDs80q2k3N-znu5Z_6sN_-02_znmfj1p76WwFavLz7_XQDugHUlc_S1x9aysxdUzzymoT5pTSmME-QB0ADr0vmu9TWsfeqDDK9DhPMe_nvTzXL8XPUR88RNq5TAyL3vstUYTMQ4qJA7rrGtkV8taZdzkJcmN3BZ1kZ2aUgm1IalFXsj2KEVdbkrZHamsqdClPGamIUGFqHIpKlHlxVpQxUJWlDPV7VYQFIIHZeza2vOwDJqZGCduciFFXmdWtWzj5Z4i0la5frF9s89CswhW7dRHKIQ1McVbi2SS5eZxKcfOc0TnEwbWvnfmlYGqKfLy7W7H7MgqTYFjNgXbfDLRpNPUrrUfgA4L4vpajcH_yzoBHS4jR6DDdepzQ18CAAD__x0Kgz8">