Skip to content

Commit 4a7bec4

Browse files
author
Dawn Perchik
committed
LWG2974 Diagnose out of bounds tuple_element/variant_alternative
1 parent 09af701 commit 4a7bec4

File tree

1 file changed

+7
-11
lines changed

1 file changed

+7
-11
lines changed

source/utilities.tex

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -133,8 +133,7 @@
133133
template <size_t I, class T> class tuple_element;
134134

135135
template <class T1, class T2> struct tuple_size<pair<T1, T2>>;
136-
template <class T1, class T2> struct tuple_element<0, pair<T1, T2>>;
137-
template <class T1, class T2> struct tuple_element<1, pair<T1, T2>>;
136+
template <size_t I, class T1, class T2> struct tuple_element<I, pair<T1, T2>>;
138137

139138
template<size_t I, class T1, class T2>
140139
constexpr tuple_element_t<I, pair<T1, T2>>& get(pair<T1, T2>&) noexcept;
@@ -1287,18 +1286,14 @@
12871286

12881287
\indexlibrary{\idxcode{tuple_element}}%
12891288
\begin{itemdecl}
1290-
tuple_element<0, pair<T1, T2>>::type
1289+
tuple_element<I, pair<T1, T2>>::type
12911290
\end{itemdecl}
12921291
\begin{itemdescr}
1293-
\pnum\textit{Value:} The type \tcode{T1}.
1294-
\end{itemdescr}
1292+
\pnum
1293+
\requires \tcode{I < 2}. The program is ill-formed if \tcode{I} is out of bounds.
12951294

1296-
\indexlibrary{\idxcode{tuple_element}}%
1297-
\begin{itemdecl}
1298-
tuple_element<1, pair<T1, T2>>::type
1299-
\end{itemdecl}
1300-
\begin{itemdescr}
1301-
\pnum\textit{Value:} The type T2.
1295+
\pnum
1296+
\textit{Value:} The type \tcode{T1} if \tcode{I == 0}, otherwise the type \tcode{T2}.
13021297
\end{itemdescr}
13031298

13041299
\indexlibrarymember{get}{pair}%
@@ -5030,6 +5025,7 @@
50305025
\begin{itemdescr}
50315026
\pnum
50325027
\requires \tcode{I < sizeof...(Types)}.
5028+
The program is ill-formed if \tcode{I} is out of bounds.
50335029

50345030
\pnum
50355031
\textit{Value:} The type $\tcode{T}_I$.

0 commit comments

Comments
 (0)