|
114 | 114 | template<class... T> |
115 | 115 | using index_sequence_for = make_index_sequence<sizeof...(T)>; |
116 | 116 |
|
| 117 | + template<class T> struct tuple_size; |
| 118 | + template<size_t I, class T> struct tuple_element; |
| 119 | + |
| 120 | + // \ref{intseq.binding}, structured binding support |
| 121 | + template<class T, T... Values> |
| 122 | + struct tuple_size<integer_sequence<T, Values...>>; |
| 123 | + |
| 124 | + template<size_t I, class T, T... Values> |
| 125 | + struct tuple_element<I, integer_sequence<T, Values...>>; |
| 126 | + template<size_t I, class T, T... Values> |
| 127 | + struct tuple_element<I, const integer_sequence<T, Values...>>; |
| 128 | + |
| 129 | + template<size_t I, class T, T... Values> |
| 130 | + constexpr T get(integer_sequence<T, Values...>) noexcept; |
| 131 | + |
117 | 132 | // \ref{pairs}, class template \tcode{pair} |
118 | 133 | template<class T1, class T2> |
119 | 134 | struct pair; |
|
151 | 166 | constexpr @\seebelow@ make_pair(T1&&, T2&&); |
152 | 167 |
|
153 | 168 | // \ref{pair.astuple}, tuple-like access to pair |
154 | | - template<class T> struct tuple_size; |
155 | | - template<size_t I, class T> struct tuple_element; |
156 | | - |
157 | 169 | template<class T1, class T2> struct tuple_size<pair<T1, T2>>; |
158 | 170 | template<size_t I, class T1, class T2> struct tuple_element<I, pair<T1, T2>>; |
159 | 171 |
|
|
0 commit comments