<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/61202>61202</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            libc++ declval not rejected on all odr-uses
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          randomnetcat
      </td>
    </tr>
</table>

<pre>
    Clang 15.0.0 with libc++ fails to reject the following invalid program (https://godbolt.org/z/oW74s73Y3):
```cpp
#include <utility>

int main() {
    if (false) {
        int i = std::declval<int>();
 }
}
```

Per N4868 [declval]/2 (https://timsong-cpp.github.io/cppwp/n4868/declval#2):
> Mandates: This function is not odr-used.

The example program odr-uses `std::declval` and thus violates the Mandates clause, making it ill-formed.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxkk0GPozgQhX9NcSkFmXIg5MChkzS3Xe2hpdUeDTZQO8ZG2CTT8-tHkKSnZ1pCgFz2V0_P9VQI3DtjKshPkF8StcTBz9WsnPajM7FVMWm8fq_OVrkeszwVqcAbxwEtNy3QCeiEnWIbMHqczf-mjRgHg5231t_Y9cjuqixrnGbfz2pEoHKIcQogX4BqoLr3uvE2pn7ugeofQLX_97APB_mfBDqu28QFxAsU4v600_RYIcmutYs2CPK8RLYc30G-Pqrbm13EUbEDKoGOCIfTfR0RkbtVTKdsMF9qW91FZAR5wRD1qkO-aNPaq7Igz-zi2mrDgnyehMPl0f3j5yn7s6p_zIx_78uiRMhPT2Z-Aarpqz-Rx-Bdv2unKe05DkuTsgeq22m6TUC1W0FA9ZNDkn7zTb7iX8ppFc3KxLeBA3aLayN7hxzQ-Yhez7slGJ1-Vvk2GDTf1ThZ83F7j40BoRBfXCkEKqcxDkvAK3u7ttym4dkfW6uW1e0zjurbNh0R2dpd5-fR6DTRldRHeVSJqbLiUIpSkCySoeoo6zLV5WWX6WOhGlWKVpRZdzjmdDSZSbgiQVJIUYicZF6kGR3KvGszLfalaKiAvTCjYptaex3XWUs4hMVURUaCEqsaY8MWAyJnbrgVgWhNxVytZ3bN0gfYC8shhl-UyNGa6lMaHmZstt4DYTR6h8raD_eSZbbVHym432zrR6B6pT8-u2n2KwSo3jQFoHrT_DMAAP__r4QhHA">