|
896 | 896 |
|
897 | 897 | \indexlibrary{\idxcode{pair}}%
|
898 | 898 | \begin{codeblock}
|
899 |
| -// defined in header \tcode{<utility>} |
900 |
| - |
901 | 899 | namespace std {
|
902 | 900 | template <class T1, class T2>
|
903 | 901 | struct pair {
|
|
914 | 912 | template<class U, class V> @\EXPLICIT@ constexpr pair(const pair<U, V>& p);
|
915 | 913 | template<class U, class V> @\EXPLICIT@ constexpr pair(pair<U, V>&& p);
|
916 | 914 | template <class... Args1, class... Args2>
|
917 |
| - pair(piecewise_construct_t, |
918 |
| - tuple<Args1...> first_args, tuple<Args2...> second_args); |
| 915 | + pair(piecewise_construct_t, tuple<Args1...> first_args, tuple<Args2...> second_args); |
919 | 916 |
|
920 | 917 | pair& operator=(const pair& p);
|
921 | 918 | template<class U, class V> pair& operator=(const pair<U, V>& p);
|
|
1048 | 1045 | \indexlibrary{\idxcode{pair}!constructor}%
|
1049 | 1046 | \begin{itemdecl}
|
1050 | 1047 | template<class... Args1, class... Args2>
|
1051 |
| - pair(piecewise_construct_t, |
1052 |
| - tuple<Args1...> first_args, tuple<Args2...> second_args); |
| 1048 | + pair(piecewise_construct_t, tuple<Args1...> first_args, tuple<Args2...> second_args); |
1053 | 1049 | \end{itemdecl}
|
1054 | 1050 |
|
1055 | 1051 | \begin{itemdescr}
|
|
1279 | 1275 | \pnum
|
1280 | 1276 | \begin{example}
|
1281 | 1277 | In place of:
|
1282 |
| - |
1283 | 1278 | \begin{codeblock}
|
1284 | 1279 | return pair<int, double>(5, 3.1415926); // explicit types
|
1285 | 1280 | \end{codeblock}
|
1286 |
| - |
1287 | 1281 | a \Cpp program may contain:
|
1288 |
| - |
1289 | 1282 | \begin{codeblock}
|
1290 | 1283 | return make_pair(5, 3.1415926); // types are deduced
|
1291 | 1284 | \end{codeblock}
|
|
1296 | 1289 | \indexlibrary{\idxcode{tuple_size}}%
|
1297 | 1290 | \begin{itemdecl}
|
1298 | 1291 | template <class T1, class T2>
|
1299 |
| -struct tuple_size<pair<T1, T2>> |
1300 |
| - : integral_constant<size_t, 2> { }; |
| 1292 | + struct tuple_size<pair<T1, T2>> : integral_constant<size_t, 2> { }; |
1301 | 1293 | \end{itemdecl}
|
1302 | 1294 |
|
1303 | 1295 | \indexlibrary{\idxcode{tuple_element}}%
|
|
1446 | 1438 |
|
1447 | 1439 | template <class... Types> class tuple_size<tuple<Types...>>;
|
1448 | 1440 |
|
1449 |
| - template <size_t I, class T> class tuple_element; // not defined |
| 1441 | + template <size_t I, class T> class tuple_element; // not defined |
1450 | 1442 | template <size_t I, class T> class tuple_element<I, const T>;
|
1451 | 1443 | template <size_t I, class T> class tuple_element<I, volatile T>;
|
1452 | 1444 | template <size_t I, class T> class tuple_element<I, const volatile T>;
|
1453 | 1445 |
|
1454 |
| - template <size_t I, class... Types> class tuple_element<I, tuple<Types...>>; |
| 1446 | + template <size_t I, class... Types> |
| 1447 | + class tuple_element<I, tuple<Types...>>; |
1455 | 1448 |
|
1456 | 1449 | template <size_t I, class T>
|
1457 | 1450 | using tuple_element_t = typename tuple_element<I, T>::type;
|
|
1501 | 1494 | void swap(tuple<Types...>& x, tuple<Types...>& y) noexcept(@\seebelow@);
|
1502 | 1495 |
|
1503 | 1496 | // \ref{tuple.helper}, tuple helper classes
|
1504 |
| - template <class T> constexpr size_t tuple_size_v |
1505 |
| - = tuple_size<T>::value; |
| 1497 | + template <class T> constexpr size_t tuple_size_v = tuple_size<T>::value; |
1506 | 1498 | }
|
1507 | 1499 | \end{codeblock}
|
1508 | 1500 |
|
|
1514 | 1506 | template <class... Types>
|
1515 | 1507 | class tuple {
|
1516 | 1508 | public:
|
1517 |
| - |
1518 | 1509 | // \ref{tuple.cnstr}, \tcode{tuple} construction
|
1519 | 1510 | @\EXPLICIT@ constexpr tuple();
|
1520 | 1511 | @\EXPLICIT@ constexpr tuple(const Types&...); // only if \tcode{sizeof...(Types) >= 1}
|
|
2190 | 2181 | \indexlibrary{\idxcode{tuple_size}}%
|
2191 | 2182 | \begin{itemdecl}
|
2192 | 2183 | template <class... Types>
|
2193 |
| -class tuple_size<tuple<Types...>> |
2194 |
| - : public integral_constant<size_t, sizeof...(Types)> { }; |
| 2184 | + class tuple_size<tuple<Types...>> : public integral_constant<size_t, sizeof...(Types)> { }; |
2195 | 2185 | \end{itemdecl}
|
2196 | 2186 |
|
2197 | 2187 | \indexlibrary{\idxcode{tuple_element}}%
|
|
4887 | 4877 | \indexlibrary{\idxcode{variant_size}}%
|
4888 | 4878 | \begin{itemdecl}
|
4889 | 4879 | template <class... Types>
|
4890 |
| -struct variant_size<variant<Types...>> |
4891 |
| - : integral_constant<size_t, sizeof...(Types)> { }; |
| 4880 | + struct variant_size<variant<Types...>> : integral_constant<size_t, sizeof...(Types)> { }; |
4892 | 4881 | \end{itemdecl}
|
4893 | 4882 | % No itemdescr needed for variant_size<variant<Types...>>
|
4894 | 4883 |
|
|
10521 | 10510 |
|
10522 | 10511 | \pnum
|
10523 | 10512 | \begin{example}
|
10524 |
| - |
10525 | 10513 | \begin{codeblock}
|
10526 |
| -struct X: public enable_shared_from_this<X> { |
10527 |
| -}; |
| 10514 | +struct X: public enable_shared_from_this<X> { }; |
10528 | 10515 |
|
10529 | 10516 | int main() {
|
10530 | 10517 | shared_ptr<X> p(new X);
|
|
0 commit comments