The C style array constructor for span is specified as follows
template<size_t N> constexpr span(
type_identity_t<element_type> (&arr)[N]) noexcept;
Why is type_identity_t necessary? instead of just:
template<size_t N> constexpr span(
element_type (&arr)[N]) noexcept;
As was originally defined in this proposal?
It was because "span's deduction-guide for built-in arrays did not work" without that change. Please check this link for more details.