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

    <tr>
        <th>Summary</th>
        <td>
            [libc++] `std::begin()` overload for arrays is not `noexcept`
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            libc++
      </td>
    </tr>

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

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

<pre>
    According to ISO/IEC 14882:2020 23.7/4 [iterator.range] the overload of `std::begin()` for arrays should have the signature
```
template<class T, size_t N> constexpr T* begin(T (&array)[N]) noexcept;
```
but in libc++ it's
```
template <class _Tp, size_t _Np>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14
_Tp*
begin(_Tp (&__array)[_Np])
{
 return __array;
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx8kl9rtDgUxj_N8ebQIR6NjhdejPMHhGLLzrB0ryRqRrM4RpJY2v30i752Ory8FASR5Jzn98NHWKvaQcoUeAb84InJddqklZHtTXiVbj7TXV1r06ihRacxP78AnfLjHv1wuyUIdsSIIQWbGOgUIvBMOWmE02ZjxNBK4Ad0nUT9Lk2vRYP6ihAx6xoIdhDsKtmqAWgLlEDE8KoNCmPEp0Xb6alvsBPvctkwgwo3GQnsAGwHEVuf5dPJ29gLJyHY172wFi9Ae7TqP1k6LCA4Yq0H6-THaOajHX4FX3BJj5bUmYJnBfADUIKDlh-1HB0E2R8zq8mhGrBXVQ2UAWWoHFBsfwTEO2F5GR8Yy2KE4PjrbvmcZ_vX1zIvnvPiWP6dn_Msf84v_-DXyf6lOF-Ob69_lee82B_L_dubH67D89rdSrhKlpdx1SzLB9E5c1FdiePVE410kxnw6_LdPz785uY1adAkQSI8mfpRwmNOPGZel16rmiV-EzGxTRo_rhkPeXW9RgmLwrCRwlMpMQpYQpG_JQqTTUisjkXj86iJZcIZhEzehOo3ff9-22jTesraSaZRHMa-14tK9napLdH3HwCiucYmnYeeqqm1ELJeWWe_1zjl-qXwD2P88FMr7-V9qKeyOGg3T91rEjFvMn3aOTfaeQ-dgE6tct1UbWp9AzrNDOvraTT6X1k7oNPiZYFOi9r_AQAA__8wZAv2">