diff options
| author | Louis Dionne <ldionne@apple.com> | 2019-04-01 16:39:34 +0000 |
|---|---|---|
| committer | Louis Dionne <ldionne@apple.com> | 2019-04-01 16:39:34 +0000 |
| commit | 2b0c7abba35ac2dc8e00c121b93476ff879bfd86 (patch) | |
| tree | 8513f212173b7c12fdc12c21c5f77d16afd5a0e2 /libcxx/include/array | |
| parent | efa6d803c624f9251d0ab7881122501bb9d27368 (diff) | |
| download | bcm5719-llvm-2b0c7abba35ac2dc8e00c121b93476ff879bfd86.tar.gz bcm5719-llvm-2b0c7abba35ac2dc8e00c121b93476ff879bfd86.zip | |
[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
Diffstat (limited to 'libcxx/include/array')
| -rw-r--r-- | libcxx/include/array | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/libcxx/include/array b/libcxx/include/array index 418a2a9fb74..88e9d57ff78 100644 --- a/libcxx/include/array +++ b/libcxx/include/array @@ -91,7 +91,7 @@ template <class T, size_t N > void swap(array<T,N>& x, array<T,N>& y) noexcept(noexcept(x.swap(y))); // C++17 template <class T> struct tuple_size; -template <size_t I, class T> class tuple_element; +template <size_t I, class T> struct tuple_element; template <class T, size_t N> struct tuple_size<array<T, N>>; template <size_t I, class T, size_t N> struct tuple_element<I, array<T, N>>; template <size_t I, class T, size_t N> T& get(array<T, N>&) noexcept; // constexpr in C++14 @@ -433,10 +433,9 @@ struct _LIBCPP_TEMPLATE_VIS tuple_size<array<_Tp, _Size> > : public integral_constant<size_t, _Size> {}; template <size_t _Ip, class _Tp, size_t _Size> -class _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, array<_Tp, _Size> > +struct _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, array<_Tp, _Size> > { static_assert(_Ip < _Size, "Index out of bounds in std::tuple_element<> (std::array)"); -public: typedef _Tp type; }; |

