[libc++] Declare std::tuple_element as struct instead of class

Similarly to https://reviews.llvm.org/rL350972, this revision changes
std::tuple_element from class to struct.

Fixes PR41331.
Thanks to Jan Wilken Dörrie for the patch.

Differential Revision: https://reviews.llvm.org/D60069

llvm-svn: 357411
Cr-Mirrored-From: sso://chromium.googlesource.com/_direct/external/github.com/llvm/llvm-project
Cr-Mirrored-Commit: 2b0c7abba35ac2dc8e00c121b93476ff879bfd86
diff --git a/include/span b/include/span
index 6b89d60..0694f51 100644
--- a/include/span
+++ b/include/span
@@ -531,11 +531,10 @@
 
 
 template <size_t _Ip, class _Tp, size_t _Size>
-class _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, span<_Tp, _Size>>
+struct _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, span<_Tp, _Size>>
 {
     static_assert( dynamic_extent != _Size, "std::tuple_element<> not supported for std::span<T, dynamic_extent>");
     static_assert(_Ip < _Size, "Index out of bounds in std::tuple_element<> (std::span)");
-public:
     typedef _Tp type;
 };