545 lines
48 KiB
HTML
545 lines
48 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
|
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
<title>标准库头文件 <utility></title>
|
|
<link rel="stylesheet" href="ext.css" />
|
|
<link rel="stylesheet" href="site_modules.css" />
|
|
</head>
|
|
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-cpp_header_utility skin-cppreference2 action-view cpp-navbar">
|
|
<div id="cpp-content-base">
|
|
<div id="content"><a id="top"></a>
|
|
<h1 id="firstHeading" class="firstHeading"><span style="font-size:0.7em; line-height:130%">标准库头文件</span> <utility></h1>
|
|
<div id="bodyContent">
|
|
<div id="contentSub"><span class="subpages">< <a href="cpp.html">cpp</a>‎ | <a href="cpp-header.html">header</a></span></div>
|
|
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
|
<p>此头文件是<a href="cpp-utility.html">通用工具</a>库的一部分。</p>
|
|
<table class="t-dsc-begin">
|
|
<tr>
|
|
<td colspan="2">
|
|
<h3><span class="mw-headline" id=".E5.8C.85.E5.90.AB">包含</span></h3>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-header-compare.html"><span class="t-lines"><span><compare></span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td><a href="cpp-language-operator_comparison.html#.E4.B8.89.E8.B7.AF.E6.AF.94.E8.BE.83">三路比较运算符</a>支持</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-header-initializer_list.html"><span class="t-lines"><span><initializer_list></span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td><span class="t-lc"><a href="cpp-utility-initializer_list.html">std::initializer_list</a></span> 类模板</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h3><span class="mw-headline" id=".E5.91.BD.E5.90.8D.E7.A9.BA.E9.97.B4">命名空间</span></h3>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td><code><b><a href="cpp-utility-rel_ops-operator_cmp.html">rel_ops</a></b></code></td>
|
|
<td>提供自动的比较运算符</td>
|
|
</tr>
|
|
<tr class="t-dsc-header">
|
|
<td colspan="2">
|
|
<div>定义于命名空间 <code>std::rel_ops</code></div>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-rel_ops-operator_cmp.html"><span class="t-lines"><span>operator!=</span><span>operator></span><span>operator<=</span><span>operator>=</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark">(C++20 中弃用)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>自动生成基于用户定义的 <span class="t-c"><span class="mw-geshi cpp source-cpp">operator<span class="sy1">==</span></span></span> 和 <span class="t-c"><span class="mw-geshi cpp source-cpp">operator<span class="sy1"><</span></span></span> 的比较运算符<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h3><span class="mw-headline" id=".E5.87.BD.E6.95.B0">函数</span></h3>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-algorithm-swap.html"><span class="t-lines"><span>swap</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>交换两个对象的值<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-exchange.html"><span class="t-lines"><span>exchange</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx14">(C++14)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>将实参替换为一个新值,并返回其先前值<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-forward.html"><span class="t-lines"><span>forward</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>转发一个函数实参<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-move.html"><span class="t-lines"><span>move</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>获得右值引用<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-move_if_noexcept.html"><span class="t-lines"><span>move_if_noexcept</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>若移动构造函数不抛出则获得右值引用<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-as_const.html"><span class="t-lines"><span>as_const</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx17">(C++17)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>获得到其实参的 const 引用<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-declval.html"><span class="t-lines"><span>declval</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>获取到其实参的引用,用于不求值语境中<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-intcmp.html"><span class="t-lines"><span>cmp_equal</span><span>cmp_not_equal</span><span>cmp_less</span><span>cmp_greater</span><span>cmp_less_equal</span><span>cmp_greater_equal</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>比较二个整数值,而无转换所致的值更改<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-in_range.html"><span class="t-lines"><span>in_range</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>检查整数值是否在给定整数类型的范围内<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-pair-make_pair.html"><span class="t-lines"><span>make_pair</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>创建一个 <code>pair</code> 对象,其类型根据各实参类型定义<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-pair-operator_cmp.html"><span class="t-lines"><span>operator==</span><span>operator!=</span><span>operator<</span><span>operator<=</span><span>operator></span><span>operator>=</span><span>operator<=></span></span></a></div>
|
|
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-until-cxx20">(C++20 中移除)</span></span><span><span class="t-mark-rev t-until-cxx20">(C++20 中移除)</span></span><span><span class="t-mark-rev t-until-cxx20">(C++20 中移除)</span></span><span><span class="t-mark-rev t-until-cxx20">(C++20 中移除)</span></span><span><span class="t-mark-rev t-until-cxx20">(C++20 中移除)</span></span><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>按字典序比较 pair 中的值<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-pair-swap2.html"><span class="t-lines"><span>std::swap<span class="t-dsc-small">(std::pair)</span></span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>特化 <span class="t-lc"><a href="cpp-algorithm-swap.html">std::swap</a></span> 算法<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-pair-get.html"><span class="t-lines"><span>std::get<span class="t-dsc-small">(std::pair)</span></span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>访问 <code>pair</code> 的一个元素<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h3><span class="mw-headline" id=".E7.B1.BB">类</span></h3>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-pair.html"><span class="t-lines"><span>pair</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现二元组,即一对值<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-tuple_size.html"><span class="t-lines"><span>tuple_size</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>获得元组式类型的元素数<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-tuple_element.html"><span class="t-lines"><span>tuple_element</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>获得元组式类型的元素类型<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-pair-tuple_size.html"><span class="t-lines"><span>std::tuple_size<span class="t-dsc-small"><std::pair></span></span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>获得 <code>pair</code> 的大小<br />
|
|
<span class="t-mark">(类模板特化)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-pair-tuple_element.html"><span class="t-lines"><span>std::tuple_element<span class="t-dsc-small"><std::pair></span></span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>获得 <code>pair</code> 中元素的类型<br />
|
|
<span class="t-mark">(类模板特化)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-integer_sequence.html"><span class="t-lines"><span>integer_sequence</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx14">(C++14)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>实现编译时整数数列<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h5><span class="mw-headline" id=".E5.89.8D.E7.BD.AE.E5.A3.B0.E6.98.8E">前置声明</span></h5>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc-header">
|
|
<td colspan="2">
|
|
<div>定义于头文件 <code><a href="cpp-header-tuple.html"><tuple></a></code></div>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-tuple.html"><span class="t-lines"><span>tuple</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>实现固定大小的容器,它保有类型可以相异的元素<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h3><span class="mw-headline" id=".E8.BE.85.E5.8A.A9.E9.A1.B9">辅助项</span></h3>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-piecewise_construct_t.html"><span class="t-lines"><span>piecewise_construct_t</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>用于为逐段构造选择正确函数重载的标签类型<br />
|
|
<span class="t-mark">(类)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-piecewise_construct.html"><span class="t-lines"><span>piecewise_construct</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>用于为逐段构造的函数消歧义的 <code>piecewise_construct_t</code> 类型的对象<br />
|
|
<span class="t-mark">(常量)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-in_place.html"><span class="t-lines"><span>in_place</span> <span>in_place_type</span> <span>in_place_index</span> <span>in_place_t</span> <span>in_place_type_t</span> <span>in_place_index_t</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx17">(C++17)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>原位构造标签<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id=".E6.A6.82.E8.A6.81">概要</span></h3>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="co2">#include <compare></span>
|
|
<span class="co2">#include <initializer_list></span>
|
|
|
|
<span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="co1">// swap</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">void</span> swap<span class="br0">(</span>T<span class="sy3">&</span> a, T<span class="sy3">&</span> b<span class="br0">)</span> <span class="kw1">noexcept</span><span class="br0">(</span><span class="coMULTI">/* 见描述 */</span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, size_t N<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">void</span> swap<span class="br0">(</span>T <span class="br0">(</span><span class="sy3">&</span>a<span class="br0">)</span><span class="br0">[</span>N<span class="br0">]</span>, T <span class="br0">(</span><span class="sy3">&</span>b<span class="br0">)</span><span class="br0">[</span>N<span class="br0">]</span><span class="br0">)</span> <span class="kw1">noexcept</span><span class="br0">(</span>is_nothrow_swappable_v<span class="sy1"><</span>T<span class="sy1">></span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// exchange</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U <span class="sy1">=</span> T<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> T exchange<span class="br0">(</span>T<span class="sy3">&</span> obj, U<span class="sy3">&&</span> new_val<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// forward/move</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> T<span class="sy3">&&</span> forward<span class="br0">(</span>remove_reference_t<span class="sy1"><</span>T<span class="sy1">></span><span class="sy3">&</span> t<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> T<span class="sy3">&&</span> forward<span class="br0">(</span>remove_reference_t<span class="sy1"><</span>T<span class="sy1">></span><span class="sy3">&&</span> t<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> remove_reference_t<span class="sy1"><</span>T<span class="sy1">></span><span class="sy3">&&</span> move<span class="br0">(</span>T<span class="sy3">&&</span><span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> conditional_t<span class="sy1"><</span>
|
|
<span class="sy3">!</span>is_nothrow_move_constructible_v<span class="sy1"><</span>T<span class="sy1">></span> <span class="sy3">&&</span> is_copy_constructible_v<span class="sy1"><</span>T<span class="sy1">></span>, <span class="kw4">const</span> T<span class="sy3">&</span>, T<span class="sy3">&&</span><span class="sy1">></span>
|
|
move_if_noexcept<span class="br0">(</span>T<span class="sy3">&</span> x<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// as_const</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> add_const_t<span class="sy1"><</span>T<span class="sy1">></span><span class="sy3">&</span> as_const<span class="br0">(</span>T<span class="sy3">&</span> t<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw4">void</span> as_const<span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&&</span><span class="br0">)</span> <span class="sy1">=</span> delete<span class="sy4">;</span>
|
|
|
|
<span class="co1">// declval</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
add_rvalue_reference_t<span class="sy1"><</span>T<span class="sy1">></span> declval<span class="br0">(</span><span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span> <span class="co1">// 作为不求值操作数</span>
|
|
|
|
<span class="co1">// 整数比较函数</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> cmp_equal<span class="br0">(</span>T t, U u<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> cmp_not_equal<span class="br0">(</span>T t, U u<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> cmp_less<span class="br0">(</span>T t, U u<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> cmp_greater<span class="br0">(</span>T t, U u<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> cmp_less_equal<span class="br0">(</span>T t, U u<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> cmp_greater_equal<span class="br0">(</span>T t, U u<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> R, <span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> in_range<span class="br0">(</span>T t<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 编译时整数数列</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, T...<span class="sy1">></span>
|
|
<span class="kw1">struct</span> integer_sequence<span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span>size_t... <span class="me1">I</span><span class="sy1">></span>
|
|
<span class="kw1">using</span> index_­sequence <span class="sy1">=</span> integer_sequence<span class="sy1"><</span>size_t, I...<span class="sy1">></span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, T N<span class="sy1">></span>
|
|
<span class="kw1">using</span> make_integer_sequence <span class="sy1">=</span> integer_sequence<span class="sy1"><</span>T, <span class="coMULTI">/* 见描述 */</span><span class="sy1">></span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span>size_t N<span class="sy1">></span>
|
|
<span class="kw1">using</span> make_index_sequence <span class="sy1">=</span> make_integer_sequence<span class="sy1"><</span>size_t, N<span class="sy1">></span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span>... <span class="me1">T</span><span class="sy1">></span>
|
|
<span class="kw1">using</span> index_sequence_for <span class="sy1">=</span> make_index_sequence<span class="sy1"><</span>sizeof...<span class="br0">(</span>T<span class="br0">)</span><span class="sy1">></span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 类模板 pair</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T1, <span class="kw1">class</span> T2<span class="sy1">></span>
|
|
<span class="kw1">struct</span> pair<span class="sy4">;</span>
|
|
|
|
<span class="co1">// pair 特化算法</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T1, <span class="kw1">class</span> T2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy1">==</span><span class="br0">(</span><span class="kw4">const</span> pair<span class="sy1"><</span>T1, T2<span class="sy1">></span><span class="sy3">&</span>, <span class="kw4">const</span> pair<span class="sy1"><</span>T1, T2<span class="sy1">></span><span class="sy3">&</span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T1, <span class="kw1">class</span> T2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> common_comparison_category_t<span class="sy1"><</span><span class="coMULTI">/*synth-three-way-result*/</span><span class="sy1"><</span>T1<span class="sy1">></span>,
|
|
<span class="coMULTI">/*synth-three-way-result*/</span><span class="sy1"><</span>T2<span class="sy1">>></span>
|
|
operator<span class="sy1"><=></span><span class="br0">(</span><span class="kw4">const</span> pair<span class="sy1"><</span>T1, T2<span class="sy1">></span><span class="sy3">&</span>, <span class="kw4">const</span> pair<span class="sy1"><</span>T1, T2<span class="sy1">></span><span class="sy3">&</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T1, <span class="kw1">class</span> T2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">void</span> swap<span class="br0">(</span>pair<span class="sy1"><</span>T1, T2<span class="sy1">></span><span class="sy3">&</span> x, pair<span class="sy1"><</span>T1, T2<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span> <span class="kw1">noexcept</span><span class="br0">(</span><span class="kw1">noexcept</span><span class="br0">(</span>x.<span class="me1">swap</span><span class="br0">(</span>y<span class="br0">)</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T1, <span class="kw1">class</span> T2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="coMULTI">/* 见描述 */</span> make_pair<span class="br0">(</span>T1<span class="sy3">&&</span>, T2<span class="sy3">&&</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 对 pair 的仿 tuple 访问</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw1">struct</span> tuple_size<span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span>size_t I, <span class="kw1">class</span> T<span class="sy1">></span> <span class="kw1">struct</span> tuple_element<span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T1, <span class="kw1">class</span> T2<span class="sy1">></span> <span class="kw1">struct</span> tuple_size<span class="sy1"><</span>pair<span class="sy1"><</span>T1, T2<span class="sy1">>></span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span>size_t I, <span class="kw1">class</span> T1, <span class="kw1">class</span> T2<span class="sy1">></span> <span class="kw1">struct</span> tuple_element<span class="sy1"><</span>I, pair<span class="sy1"><</span>T1, T2<span class="sy1">>></span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span>size_t I, <span class="kw1">class</span> T1, <span class="kw1">class</span> T2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> tuple_element_t<span class="sy1"><</span>I, pair<span class="sy1"><</span>T1, T2<span class="sy1">>></span><span class="sy3">&</span> get<span class="br0">(</span>pair<span class="sy1"><</span>T1, T2<span class="sy1">></span><span class="sy3">&</span><span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span>size_t I, <span class="kw1">class</span> T1, <span class="kw1">class</span> T2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> tuple_element_t<span class="sy1"><</span>I, pair<span class="sy1"><</span>T1, T2<span class="sy1">>></span><span class="sy3">&&</span> get<span class="br0">(</span>pair<span class="sy1"><</span>T1, T2<span class="sy1">></span><span class="sy3">&&</span><span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span>size_t I, <span class="kw1">class</span> T1, <span class="kw1">class</span> T2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">const</span> tuple_element_t<span class="sy1"><</span>I, pair<span class="sy1"><</span>T1, T2<span class="sy1">>></span><span class="sy3">&</span> get<span class="br0">(</span><span class="kw4">const</span> pair<span class="sy1"><</span>T1, T2<span class="sy1">></span><span class="sy3">&</span><span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span>size_t I, <span class="kw1">class</span> T1, <span class="kw1">class</span> T2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">const</span> tuple_element_t<span class="sy1"><</span>I, pair<span class="sy1"><</span>T1, T2<span class="sy1">>></span><span class="sy3">&&</span> get<span class="br0">(</span><span class="kw4">const</span> pair<span class="sy1"><</span>T1, T2<span class="sy1">></span><span class="sy3">&&</span><span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T1, <span class="kw1">class</span> T2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> T1<span class="sy3">&</span> get<span class="br0">(</span>pair<span class="sy1"><</span>T1, T2<span class="sy1">></span><span class="sy3">&</span> p<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T1, <span class="kw1">class</span> T2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">const</span> T1<span class="sy3">&</span> get<span class="br0">(</span><span class="kw4">const</span> pair<span class="sy1"><</span>T1, T2<span class="sy1">></span><span class="sy3">&</span> p<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T1, <span class="kw1">class</span> T2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> T1<span class="sy3">&&</span> get<span class="br0">(</span>pair<span class="sy1"><</span>T1, T2<span class="sy1">></span><span class="sy3">&&</span> p<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T1, <span class="kw1">class</span> T2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">const</span> T1<span class="sy3">&&</span> get<span class="br0">(</span><span class="kw4">const</span> pair<span class="sy1"><</span>T1, T2<span class="sy1">></span><span class="sy3">&&</span> p<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T2, <span class="kw1">class</span> T1<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> T2<span class="sy3">&</span> get<span class="br0">(</span>pair<span class="sy1"><</span>T1, T2<span class="sy1">></span><span class="sy3">&</span> p<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T2, <span class="kw1">class</span> T1<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">const</span> T2<span class="sy3">&</span> get<span class="br0">(</span><span class="kw4">const</span> pair<span class="sy1"><</span>T1, T2<span class="sy1">></span><span class="sy3">&</span> p<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T2, <span class="kw1">class</span> T1<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> T2<span class="sy3">&&</span> get<span class="br0">(</span>pair<span class="sy1"><</span>T1, T2<span class="sy1">></span><span class="sy3">&&</span> p<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T2, <span class="kw1">class</span> T1<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">const</span> T2<span class="sy3">&&</span> get<span class="br0">(</span><span class="kw4">const</span> pair<span class="sy1"><</span>T1, T2<span class="sy1">></span><span class="sy3">&&</span> p<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// pair 逐片构造</span>
|
|
<span class="kw1">struct</span> piecewise_construct_t <span class="br0">{</span>
|
|
<span class="kw1">explicit</span> piecewise_construct_t<span class="br0">(</span><span class="br0">)</span> <span class="sy1">=</span> <span class="kw1">default</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="kw1">inline</span> <span class="kw4">constexpr</span> piecewise_construct_t piecewise_construct<span class="br0">{</span><span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span>... <span class="me1">Types</span><span class="sy1">></span> <span class="kw1">class</span> tuple<span class="sy4">;</span> <span class="co1">// 定义于 <tuple></span>
|
|
|
|
<span class="co1">// 原位构造</span>
|
|
<span class="kw1">struct</span> in_place_t <span class="br0">{</span>
|
|
<span class="kw1">explicit</span> in_place_t<span class="br0">(</span><span class="br0">)</span> <span class="sy1">=</span> <span class="kw1">default</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="kw1">inline</span> <span class="kw4">constexpr</span> in_place_t in_place<span class="br0">{</span><span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw1">struct</span> in_place_type_t <span class="br0">{</span>
|
|
<span class="kw1">explicit</span> in_place_type_t<span class="br0">(</span><span class="br0">)</span> <span class="sy1">=</span> <span class="kw1">default</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw1">inline</span> <span class="kw4">constexpr</span> in_place_type_t<span class="sy1"><</span>T<span class="sy1">></span> in_place_type<span class="br0">{</span><span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span>size_t I<span class="sy1">></span>
|
|
<span class="kw1">struct</span> in_place_index_t <span class="br0">{</span>
|
|
<span class="kw1">explicit</span> in_place_index_t<span class="br0">(</span><span class="br0">)</span> <span class="sy1">=</span> <span class="kw1">default</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span>size_t I<span class="sy1">></span> <span class="kw1">inline</span> <span class="kw4">constexpr</span> in_place_index_t<span class="sy1"><</span>I<span class="sy1">></span> in_place_index<span class="br0">{</span><span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span>
|
|
|
|
<span class="co1">// 弃用</span>
|
|
<span class="kw1">namespace</span> std<span class="sy4">::</span><span class="me2">rel_ops</span> <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw4">bool</span> operator<span class="sy3">!</span><span class="sy1">=</span><span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&</span>, <span class="kw4">const</span> T<span class="sy3">&</span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw4">bool</span> operator<span class="sy1">></span> <span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&</span>, <span class="kw4">const</span> T<span class="sy3">&</span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw4">bool</span> operator<span class="sy1"><=</span><span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&</span>, <span class="kw4">const</span> T<span class="sy3">&</span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw4">bool</span> operator<span class="sy1">>=</span><span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&</span>, <span class="kw4">const</span> T<span class="sy3">&</span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::integer_sequence">类模板 <span class="t-lc"><a href="cpp-utility-integer_sequence.html">std::integer_sequence</a></span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, T... <span class="me1">I</span><span class="sy1">></span> <span class="kw1">struct</span> integer_sequence <span class="br0">{</span>
|
|
<span class="kw1">using</span> value_type <span class="sy1">=</span> T<span class="sy4">;</span>
|
|
<span class="kw4">static</span> <span class="kw4">constexpr</span> size_t size<span class="br0">(</span><span class="br0">)</span> <span class="kw1">noexcept</span> <span class="br0">{</span> <span class="kw1">return</span> sizeof...<span class="br0">(</span>I<span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::pair">类模板 <span class="t-lc"><a href="cpp-utility-pair.html">std::pair</a></span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T1, <span class="kw1">class</span> T2<span class="sy1">></span>
|
|
<span class="kw1">struct</span> pair <span class="br0">{</span>
|
|
<span class="kw1">using</span> first_type <span class="sy1">=</span> T1<span class="sy4">;</span>
|
|
<span class="kw1">using</span> second_type <span class="sy1">=</span> T2<span class="sy4">;</span>
|
|
|
|
T1 first<span class="sy4">;</span>
|
|
T2 second<span class="sy4">;</span>
|
|
|
|
pair<span class="br0">(</span><span class="kw4">const</span> pair<span class="sy3">&</span><span class="br0">)</span> <span class="sy1">=</span> <span class="kw1">default</span><span class="sy4">;</span>
|
|
pair<span class="br0">(</span>pair<span class="sy3">&&</span><span class="br0">)</span> <span class="sy1">=</span> <span class="kw1">default</span><span class="sy4">;</span>
|
|
<span class="kw4">constexpr</span> <span class="kw1">explicit</span><span class="br0">(</span><span class="coMULTI">/* 见描述 */</span><span class="br0">)</span> pair<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw4">constexpr</span> <span class="kw1">explicit</span><span class="br0">(</span><span class="coMULTI">/* 见描述 */</span><span class="br0">)</span> pair<span class="br0">(</span><span class="kw4">const</span> T1<span class="sy3">&</span> x, <span class="kw4">const</span> T2<span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> U1 <span class="sy1">=</span> T1, <span class="kw1">class</span> U2 <span class="sy1">=</span> T2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw1">explicit</span><span class="br0">(</span><span class="coMULTI">/* 见描述 */</span><span class="br0">)</span> pair<span class="br0">(</span>U1<span class="sy3">&&</span> x, U2<span class="sy3">&&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> U1, <span class="kw1">class</span> U2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw1">explicit</span><span class="br0">(</span><span class="coMULTI">/* 见描述 */</span><span class="br0">)</span> pair<span class="br0">(</span><span class="kw4">const</span> pair<span class="sy1"><</span>U1, U2<span class="sy1">></span><span class="sy3">&</span> p<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> U1, <span class="kw1">class</span> U2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw1">explicit</span><span class="br0">(</span><span class="coMULTI">/* 见描述 */</span><span class="br0">)</span> pair<span class="br0">(</span>pair<span class="sy1"><</span>U1, U2<span class="sy1">></span><span class="sy3">&&</span> p<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span>... <span class="me1">Args1</span>, <span class="kw1">class</span>... <span class="me1">Args2</span><span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> pair<span class="br0">(</span>piecewise_construct_t,
|
|
tuple<span class="sy1"><</span>Args1...<span class="sy1">></span> first_args, tuple<span class="sy1"><</span>Args2...<span class="sy1">></span> second_args<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw4">constexpr</span> pair<span class="sy3">&</span> operator<span class="sy1">=</span><span class="br0">(</span><span class="kw4">const</span> pair<span class="sy3">&</span> p<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> U1, <span class="kw1">class</span> U2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> pair<span class="sy3">&</span> operator<span class="sy1">=</span><span class="br0">(</span><span class="kw4">const</span> pair<span class="sy1"><</span>U1, U2<span class="sy1">></span><span class="sy3">&</span> p<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw4">constexpr</span> pair<span class="sy3">&</span> operator<span class="sy1">=</span><span class="br0">(</span>pair<span class="sy3">&&</span> p<span class="br0">)</span> <span class="kw1">noexcept</span><span class="br0">(</span><span class="coMULTI">/* 见描述 */</span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> U1, <span class="kw1">class</span> U2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> pair<span class="sy3">&</span> operator<span class="sy1">=</span><span class="br0">(</span>pair<span class="sy1"><</span>U1, U2<span class="sy1">></span><span class="sy3">&&</span> p<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw4">constexpr</span> <span class="kw4">void</span> swap<span class="br0">(</span>pair<span class="sy3">&</span> p<span class="br0">)</span> <span class="kw1">noexcept</span><span class="br0">(</span><span class="coMULTI">/* 见描述 */</span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T1, <span class="kw1">class</span> T2<span class="sy1">></span>
|
|
pair<span class="br0">(</span>T1, T2<span class="br0">)</span> <span class="sy2">-</span><span class="sy1">></span> pair<span class="sy1"><</span>T1, T2<span class="sy1">></span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-header-tuple.html"><span class="t-lines"><span><tuple></span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td><span class="t-lc"><a href="cpp-utility-tuple.html">std::tuple</a></span> 类模板</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td colspan="2"><a href="cpp-utility.html">工具库</a></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="visualClear"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|