<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">