Skip to content

Commit 6f34b05

Browse files
hanickadottkoeppe
authored andcommitted
[pair.astuple, tuple.helper] Fix inconsistent class key in tuple_size/tuple_element. (#2679)
It was declared as a struct and specializations were classes.
1 parent 102a791 commit 6f34b05

File tree

2 files changed

+22
-23
lines changed

2 files changed

+22
-23
lines changed

source/containers.tex

+2-2
Original file line numberDiff line numberDiff line change
@@ -3088,8 +3088,8 @@
30883088
constexpr void swap(array<T, N>& x, array<T, N>& y) noexcept(noexcept(x.swap(y)));
30893089

30903090
// \ref{array.tuple}, tuple interface to class template \tcode{array}
3091-
template<class T> class tuple_size;
3092-
template<size_t I, class T> class tuple_element;
3091+
template<class T> struct tuple_size;
3092+
template<size_t I, class T> struct tuple_element;
30933093
template<class T, size_t N>
30943094
struct tuple_size<array<T, N>>;
30953095
template<size_t I, class T, size_t N>

source/utilities.tex

+20-21
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,8 @@
120120
constexpr @\seebelow@ make_pair(T1&&, T2&&);
121121

122122
// \ref{pair.astuple}, tuple-like access to pair
123-
template<class T> class tuple_size;
124-
template<size_t I, class T> class tuple_element;
123+
template<class T> struct tuple_size;
124+
template<size_t I, class T> struct tuple_element;
125125

126126
template<class T1, class T2> struct tuple_size<pair<T1, T2>>;
127127
template<size_t I, class T1, class T2> struct tuple_element<I, pair<T1, T2>>;
@@ -1018,20 +1018,20 @@
10181018
constexpr T make_from_tuple(Tuple&& t);
10191019

10201020
// \ref{tuple.helper}, tuple helper classes
1021-
template<class T> class tuple_size; // not defined
1022-
template<class T> class tuple_size<const T>;
1023-
template<class T> class tuple_size<volatile T>;
1024-
template<class T> class tuple_size<const volatile T>;
1021+
template<class T> struct tuple_size; // not defined
1022+
template<class T> struct tuple_size<const T>;
1023+
template<class T> struct tuple_size<volatile T>;
1024+
template<class T> struct tuple_size<const volatile T>;
10251025

1026-
template<class... Types> class tuple_size<tuple<Types...>>;
1026+
template<class... Types> struct tuple_size<tuple<Types...>>;
10271027

1028-
template<size_t I, class T> class tuple_element; // not defined
1029-
template<size_t I, class T> class tuple_element<I, const T>;
1030-
template<size_t I, class T> class tuple_element<I, volatile T>;
1031-
template<size_t I, class T> class tuple_element<I, const volatile T>;
1028+
template<size_t I, class T> struct tuple_element; // not defined
1029+
template<size_t I, class T> struct tuple_element<I, const T>;
1030+
template<size_t I, class T> struct tuple_element<I, volatile T>;
1031+
template<size_t I, class T> struct tuple_element<I, const volatile T>;
10321032

10331033
template<size_t I, class... Types>
1034-
class tuple_element<I, tuple<Types...>>;
1034+
struct tuple_element<I, tuple<Types...>>;
10351035

10361036
template<size_t I, class T>
10371037
using tuple_element_t = typename tuple_element<I, T>::type;
@@ -1794,14 +1794,13 @@
17941794
\indexlibrary{\idxcode{tuple_size}}%
17951795
\begin{itemdecl}
17961796
template<class... Types>
1797-
class tuple_size<tuple<Types...>> : public integral_constant<size_t, sizeof...(Types)> { };
1797+
struct tuple_size<tuple<Types...>> : public integral_constant<size_t, sizeof...(Types)> { };
17981798
\end{itemdecl}
17991799

18001800
\indexlibrary{\idxcode{tuple_element}}%
18011801
\begin{itemdecl}
18021802
template<size_t I, class... Types>
1803-
class tuple_element<I, tuple<Types...>> {
1804-
public:
1803+
struct tuple_element<I, tuple<Types...>> {
18051804
using type = TI;
18061805
};
18071806
\end{itemdecl}
@@ -1819,9 +1818,9 @@
18191818

18201819
\indexlibrary{\idxcode{tuple_size}}%
18211820
\begin{itemdecl}
1822-
template<class T> class tuple_size<const T>;
1823-
template<class T> class tuple_size<volatile T>;
1824-
template<class T> class tuple_size<const volatile T>;
1821+
template<class T> struct tuple_size<const T>;
1822+
template<class T> struct tuple_size<volatile T>;
1823+
template<class T> struct tuple_size<const volatile T>;
18251824
\end{itemdecl}
18261825

18271826
\begin{itemdescr}
@@ -1857,9 +1856,9 @@
18571856

18581857
\indexlibrary{\idxcode{tuple_element}}%
18591858
\begin{itemdecl}
1860-
template<size_t I, class T> class tuple_element<I, const T>;
1861-
template<size_t I, class T> class tuple_element<I, volatile T>;
1862-
template<size_t I, class T> class tuple_element<I, const volatile T>;
1859+
template<size_t I, class T> struct tuple_element<I, const T>;
1860+
template<size_t I, class T> struct tuple_element<I, volatile T>;
1861+
template<size_t I, class T> struct tuple_element<I, const volatile T>;
18631862
\end{itemdecl}
18641863

18651864
\begin{itemdescr}

0 commit comments

Comments
 (0)