上传cppreference
This commit is contained in:
@@ -0,0 +1,187 @@
|
||||
<!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>std::visit</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_utility_variant_visit 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%">std::</span>visit</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="cpp.html">cpp</a>‎ | <a href="cpp-utility.html">utility</a>‎ | <a href="cpp-utility-variant.html">variant</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><a href="cpp-header-variant.html"><variant></a></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-cxx17">
|
||||
<td>
|
||||
<div><span class="mw-geshi cpp source-cpp"><span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> Visitor, <span class="kw1">class</span>... <span class="me1">Variants</span><span class="sy1">></span><br />
|
||||
<span class="kw4">constexpr</span> <span class="coMULTI">/*see below*/</span> visit<span class="br0">(</span>Visitor<span class="sy3">&&</span> vis, Variants<span class="sy3">&&</span>... <span class="me1">vars</span><span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(1)</td>
|
||||
<td><span class="t-mark-rev t-since-cxx17">(C++17 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-cxx20">
|
||||
<td>
|
||||
<div><span class="mw-geshi cpp source-cpp"><span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> R, <span class="kw1">class</span> Visitor, <span class="kw1">class</span>... <span class="me1">Variants</span><span class="sy1">></span><br />
|
||||
<span class="kw4">constexpr</span> R visit<span class="br0">(</span>Visitor<span class="sy3">&&</span> vis, Variants<span class="sy3">&&</span>... <span class="me1">vars</span><span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(2)</td>
|
||||
<td><span class="t-mark-rev t-since-cxx20">(C++20 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>应用观览器 <code>vis</code> 到 <code>variant</code> 变量组 <code>vars</code> 。</p>
|
||||
<p>这些重载仅若 <span class="t-c"><span class="mw-geshi cpp source-cpp"><a href="cpp-types-remove_reference.html"><span class="kw607">std::<span class="me2">remove_reference_t</span></span></a><span class="sy1"><</span>Variants<span class="sy1">></span>...</span></span> 中的每个类型均为(可为 const 限定的) <span class="t-lc"><a href="cpp-utility-variant.html">std::variant</a></span> 的特化,或(可为 const 限定)的类 <code>C</code> ,满足恰有一个 <span class="t-lc"><a href="cpp-utility-variant.html">std::variant</a></span> 特化是 <code>C</code> 的基类且它是公开且无歧义的基类才参与重载决议。</p>
|
||||
<p>等效于返回</p>
|
||||
<p><span class="t-cc"><span class="mw-geshi cpp source-cpp"><a href="cpp-utility-functional-invoke.html"><span class="kw1058">std::<span class="me2">invoke</span></span></a><span class="br0">(</span><a href="cpp-utility-forward.html"><span class="kw1116">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>Visitor<span class="sy1">></span><span class="br0">(</span>vis<span class="br0">)</span>,<br />
|
||||
std<span class="sy4">::</span><span class="me2">get</span><span class="sy1"><</span>is<span class="sy1">></span><span class="br0">(</span><a href="cpp-utility-forward.html"><span class="kw1116">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>VariantBases<span class="sy1">></span><span class="br0">(</span>vars<span class="br0">)</span><span class="br0">)</span>...<span class="br0">)</span></span></span></p>
|
||||
<p>,其中 <code>VariantBases...</code> 中的每个类型是确定如上的唯一 <span class="t-lc"><a href="cpp-utility-variant.html">std::variant</a></span> 特化,除了若对应的实参拥有 const 限定类型,为左值或右值,则分别添加 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">const</span></span></span> 、 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy3">&</span></span></span> 或 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy3">&&</span></span></span> 到它,而 <code>is...</code> 是 <span class="t-c"><span class="mw-geshi cpp source-cpp"><a href="cpp-utility-forward.html"><span class="kw1116">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>VariantBases<span class="sy1">></span><span class="br0">(</span>vars<span class="br0">)</span>.<span class="me1">index</span><span class="br0">(</span><span class="br0">)</span>...</span></span> 。</p>
|
||||
<div class="t-li1"><span class="t-li">1)</span> 如同用 <span class="t-c"><span class="mw-geshi cpp source-cpp">decltype</span></span> 从返回的表达式推导返回类型。若上述调用不是对于所有 <code>variant</code> 的所有可选项类型均为同一类型和值类别的合法表达式,则调用为谬构。</div>
|
||||
<div class="t-li1"><span class="t-li">2)</span> 返回类型为 <code>R</code> 。若 <code>R</code> 是(可有 cv 限定的) <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">void</span></span></span> ,则舍弃 <code>invoke</code> 表达式的结果。</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>vis</td>
|
||||
<td>-</td>
|
||||
<td>接受每个 <code>variant</code> 的每个可能可选项的<a href="cpp-named_req-Callable.html"><span style="font-style:italic">可调用</span> <span style="font-family: Georgia, 'DejaVu Serif', serif; font-style:italic">(Callable)</span></a> 对象</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>vars</td>
|
||||
<td>-</td>
|
||||
<td>传递给观览器的 <code>variant</code> 列表</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<div class="t-li1"><span class="t-li">1)</span> 观览器的所选调用所返回的值,转换成所有可行的 <code>std::invoke</code> 表达式的共用类型。</div>
|
||||
<div class="t-li1"><span class="t-li">2)</span> 若 <code>R</code> 为(可有 cv 限定的) <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">void</span></span></span> 则为无;否则为选择的观览器调用所返回的值,再隐式转换成 <code>R</code> 。</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.82.E5.B8.B8">异常</span></h3>
|
||||
<p>若任何 <code>vars</code> 中的 <code>variant</code> 为因异常无值( <a href="cpp-utility-variant-valueless_by_exception.html"><tt>valueless_by_exception</tt></a> ),则抛出 <span class="t-lc"><a href="cpp-utility-variant-bad_variant_access.html">std::bad_variant_access</a></span> 。如同通过 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="br0">(</span><a href="cpp-utility-forward.html"><span class="kw1116">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>VariantBases<span class="sy1">></span><span class="br0">(</span>vars<span class="br0">)</span>.<span class="me1">valueless_by_exception</span><span class="br0">(</span><span class="br0">)</span> <span class="sy3">||</span> ...<span class="br0">)</span></span></span> 确定任何 <code>variant</code> 为因异常无值。</p>
|
||||
<h3><span class="mw-headline" id=".E5.A4.8D.E6.9D.82.E5.BA.A6">复杂度</span></h3>
|
||||
<p>当 <code>variant</code> 的数量为零或一时,可调用对象的调用在常数时间内实现,即它不取决于 <code>sizeof...(Types)</code> 。</p>
|
||||
<p>若 <code>variant</code> 的数量大于 1 ,则可调用对象的调用没有复杂度要求。</p>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E8.A7.A3">注解</span></h3>
|
||||
<p>令 <i>n</i> 为 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="br0">(</span><span class="nu0">1</span> <span class="sy2">*</span> ... <span class="sy2">*</span> <a href="cpp-utility-variant-variant_size.html"><span class="kw1091">std::<span class="me2">variant_size_v</span></span></a><span class="sy1"><</span><a href="cpp-types-remove_reference.html"><span class="kw607">std::<span class="me2">remove_reference_t</span></span></a><span class="sy1"><</span>VariantBases<span class="sy1">>></span><span class="br0">)</span></span></span>,实现通常会为每个 <code>std::visit</code> 的特化生成等价于有 <i>n</i> 个函数指针的(可能多维的)数组的表,这与<a href="cpp-language-virtual.html">虚函数</a>的实现类似。</p>
|
||||
<p>实现亦可为 <code>std::visit</code> 生成有 <i>n</i> 个分支的 <a href="cpp-language-switch.html">switch 语句</a>(例如 MSVC STL 实现在 <i>n</i> 不大于 256 时使用 switch 语句)。</p>
|
||||
<p>在典型实现上,能认为调用 <code>vis</code> 的时间复杂度等于访问(可能多维的)数组中的元素,或执行 switch 语句的时间复杂度。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="cpp source-cpp">
|
||||
<pre class="de1"><span class="co2">#include <iomanip></span>
|
||||
<span class="co2">#include <iostream></span>
|
||||
<span class="co2">#include <string></span>
|
||||
<span class="co2">#include <type_traits></span>
|
||||
<span class="co2">#include <variant></span>
|
||||
<span class="co2">#include <vector></span>
|
||||
|
||||
<span class="co1">// 要观览的 variant</span>
|
||||
<span class="kw1">using</span> var_t <span class="sy1">=</span> <a href="cpp-utility-variant.html"><span class="kw1085">std::<span class="me2">variant</span></span></a><span class="sy1"><</span><span class="kw4">int</span>, <span class="kw4">long</span>, <span class="kw4">double</span>, <a href="cpp-string-basic_string.html"><span class="kw1229">std::<span class="me2">string</span></span></a><span class="sy1">></span><span class="sy4">;</span>
|
||||
|
||||
<span class="co1">// 观览器 #3 的辅助常量</span>
|
||||
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span><span class="sy1">></span> <span class="kw1">inline</span> <span class="kw4">constexpr</span> <span class="kw4">bool</span> always_false_v <span class="sy1">=</span> <span class="kw2">false</span><span class="sy4">;</span>
|
||||
|
||||
<span class="co1">// 观览器 #4 的辅助类型</span>
|
||||
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span>... <span class="me1">Ts</span><span class="sy1">></span> <span class="kw1">struct</span> overloaded <span class="sy4">:</span> Ts... <span class="br0">{</span> <span class="kw1">using</span> Ts<span class="sy4">::</span><span class="me2">operator</span><span class="br0">(</span><span class="br0">)</span>...<span class="sy4">;</span> <span class="br0">}</span><span class="sy4">;</span>
|
||||
<span class="co1">// 显式推导指引( C++20 起不需要)</span>
|
||||
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span>... <span class="me1">Ts</span><span class="sy1">></span> overloaded<span class="br0">(</span>Ts...<span class="br0">)</span> <span class="sy2">-</span><span class="sy1">></span> overloaded<span class="sy1"><</span>Ts...<span class="sy1">></span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
|
||||
<a href="cpp-container-vector.html"><span class="kw1268">std::<span class="me2">vector</span></span></a><span class="sy1"><</span>var_t<span class="sy1">></span> vec <span class="sy1">=</span> <span class="br0">{</span><span class="nu0">10</span>, <span class="nu0">15l</span>, <span class="nu16">1.5</span>, <span class="st0">"hello"</span><span class="br0">}</span><span class="sy4">;</span>
|
||||
<span class="kw1">for</span><span class="br0">(</span><span class="kw4">auto</span><span class="sy3">&&</span> v<span class="sy4">:</span> vec<span class="br0">)</span> <span class="br0">{</span>
|
||||
<span class="co1">// 1. void 观览器,仅为其副效应调用</span>
|
||||
std<span class="sy4">::</span><span class="me2">visit</span><span class="br0">(</span><span class="br0">[</span><span class="br0">]</span><span class="br0">(</span><span class="kw4">auto</span><span class="sy3">&&</span> arg<span class="br0">)</span><span class="br0">{</span><a href="cpp-io-cout.html"><span class="kw1757">std::<span class="me2">cout</span></span></a> <span class="sy1"><<</span> arg<span class="sy4">;</span><span class="br0">}</span>, v<span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="co1">// 2. 返回值的观览器,返回另一 variant 的常见模式</span>
|
||||
var_t w <span class="sy1">=</span> std<span class="sy4">::</span><span class="me2">visit</span><span class="br0">(</span><span class="br0">[</span><span class="br0">]</span><span class="br0">(</span><span class="kw4">auto</span><span class="sy3">&&</span> arg<span class="br0">)</span> <span class="sy2">-</span><span class="sy1">></span> var_t <span class="br0">{</span><span class="kw1">return</span> arg <span class="sy2">+</span> arg<span class="sy4">;</span><span class="br0">}</span>, v<span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<a href="cpp-io-cout.html"><span class="kw1757">std::<span class="me2">cout</span></span></a> <span class="sy1"><<</span> <span class="st0">". After doubling, variant holds "</span><span class="sy4">;</span>
|
||||
<span class="co1">// 3. 类型匹配观览器:亦能为带 4 个重载的 operator() 的类</span>
|
||||
std<span class="sy4">::</span><span class="me2">visit</span><span class="br0">(</span><span class="br0">[</span><span class="br0">]</span><span class="br0">(</span><span class="kw4">auto</span><span class="sy3">&&</span> arg<span class="br0">)</span> <span class="br0">{</span>
|
||||
<span class="kw1">using</span> T <span class="sy1">=</span> <a href="cpp-types-decay.html"><span class="kw629">std::<span class="me2">decay_t</span></span></a><span class="sy1"><</span>decltype<span class="br0">(</span>arg<span class="br0">)</span><span class="sy1">></span><span class="sy4">;</span>
|
||||
<span class="kw1">if</span> <span class="kw4">constexpr</span> <span class="br0">(</span><a href="cpp-types-is_same.html"><span class="kw589">std::<span class="me2">is_same_v</span></span></a><span class="sy1"><</span>T, <span class="kw4">int</span><span class="sy1">></span><span class="br0">)</span>
|
||||
<a href="cpp-io-cout.html"><span class="kw1757">std::<span class="me2">cout</span></span></a> <span class="sy1"><<</span> <span class="st0">"int with value "</span> <span class="sy1"><<</span> arg <span class="sy1"><<</span> <span class="st0">'<span class="es1">\n</span>'</span><span class="sy4">;</span>
|
||||
<span class="kw1">else</span> <span class="kw1">if</span> <span class="kw4">constexpr</span> <span class="br0">(</span><a href="cpp-types-is_same.html"><span class="kw589">std::<span class="me2">is_same_v</span></span></a><span class="sy1"><</span>T, <span class="kw4">long</span><span class="sy1">></span><span class="br0">)</span>
|
||||
<a href="cpp-io-cout.html"><span class="kw1757">std::<span class="me2">cout</span></span></a> <span class="sy1"><<</span> <span class="st0">"long with value "</span> <span class="sy1"><<</span> arg <span class="sy1"><<</span> <span class="st0">'<span class="es1">\n</span>'</span><span class="sy4">;</span>
|
||||
<span class="kw1">else</span> <span class="kw1">if</span> <span class="kw4">constexpr</span> <span class="br0">(</span><a href="cpp-types-is_same.html"><span class="kw589">std::<span class="me2">is_same_v</span></span></a><span class="sy1"><</span>T, <span class="kw4">double</span><span class="sy1">></span><span class="br0">)</span>
|
||||
<a href="cpp-io-cout.html"><span class="kw1757">std::<span class="me2">cout</span></span></a> <span class="sy1"><<</span> <span class="st0">"double with value "</span> <span class="sy1"><<</span> arg <span class="sy1"><<</span> <span class="st0">'<span class="es1">\n</span>'</span><span class="sy4">;</span>
|
||||
<span class="kw1">else</span> <span class="kw1">if</span> <span class="kw4">constexpr</span> <span class="br0">(</span><a href="cpp-types-is_same.html"><span class="kw589">std::<span class="me2">is_same_v</span></span></a><span class="sy1"><</span>T, <a href="cpp-string-basic_string.html"><span class="kw1229">std::<span class="me2">string</span></span></a><span class="sy1">></span><span class="br0">)</span>
|
||||
<a href="cpp-io-cout.html"><span class="kw1757">std::<span class="me2">cout</span></span></a> <span class="sy1"><<</span> <span class="st0">"std::string with value "</span> <span class="sy1"><<</span> <a href="cpp-io-manip-quoted.html"><span class="kw1801">std::<span class="me2">quoted</span></span></a><span class="br0">(</span>arg<span class="br0">)</span> <span class="sy1"><<</span> <span class="st0">'<span class="es1">\n</span>'</span><span class="sy4">;</span>
|
||||
<span class="kw1">else</span>
|
||||
static_assert<span class="br0">(</span>always_false_v<span class="sy1"><</span>T<span class="sy1">></span>, <span class="st0">"non-exhaustive visitor!"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span>, w<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
|
||||
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">auto</span><span class="sy3">&&</span> v<span class="sy4">:</span> vec<span class="br0">)</span> <span class="br0">{</span>
|
||||
<span class="co1">// 4. 另一种类型匹配观览器:有三个重载的 operator() 的类</span>
|
||||
<span class="co1">// 注:此情况下 '(auto arg)' 模板 operator() 将绑定到 'int' 与 'long' ,</span>
|
||||
<span class="co1">// 但若它不存在则 '(double arg)' operator() *亦将* 绑定到 'int' 与 'long' ,</span>
|
||||
<span class="co1">// 因为两者均可隐式转换成 double 。使用此形式时应留心以正确处理隐式转换。</span>
|
||||
std<span class="sy4">::</span><span class="me2">visit</span><span class="br0">(</span>overloaded <span class="br0">{</span>
|
||||
<span class="br0">[</span><span class="br0">]</span><span class="br0">(</span><span class="kw4">auto</span> arg<span class="br0">)</span> <span class="br0">{</span> <a href="cpp-io-cout.html"><span class="kw1757">std::<span class="me2">cout</span></span></a> <span class="sy1"><<</span> arg <span class="sy1"><<</span> <span class="st0">' '</span><span class="sy4">;</span> <span class="br0">}</span>,
|
||||
<span class="br0">[</span><span class="br0">]</span><span class="br0">(</span><span class="kw4">double</span> arg<span class="br0">)</span> <span class="br0">{</span> <a href="cpp-io-cout.html"><span class="kw1757">std::<span class="me2">cout</span></span></a> <span class="sy1"><<</span> <a href="cpp-io-manip-fixed.html"><span class="kw1783">std::<span class="me2">fixed</span></span></a> <span class="sy1"><<</span> arg <span class="sy1"><<</span> <span class="st0">' '</span><span class="sy4">;</span> <span class="br0">}</span>,
|
||||
<span class="br0">[</span><span class="br0">]</span><span class="br0">(</span><span class="kw4">const</span> <a href="cpp-string-basic_string.html"><span class="kw1229">std::<span class="me2">string</span></span></a><span class="sy3">&</span> arg<span class="br0">)</span> <span class="br0">{</span> <a href="cpp-io-cout.html"><span class="kw1757">std::<span class="me2">cout</span></span></a> <span class="sy1"><<</span> <a href="cpp-io-manip-quoted.html"><span class="kw1801">std::<span class="me2">quoted</span></span></a><span class="br0">(</span>arg<span class="br0">)</span> <span class="sy1"><<</span> <span class="st0">' '</span><span class="sy4">;</span> <span class="br0">}</span>,
|
||||
<span class="br0">}</span>, v<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">10. After doubling, variant holds int with value 20
|
||||
15. After doubling, variant holds long with value 30
|
||||
1.5. After doubling, variant holds double with value 3
|
||||
hello. After doubling, variant holds std::string with value "hellohello"
|
||||
10 15 1.500000 "hello"</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E7.BC.BA.E9.99.B7.E6.8A.A5.E5.91.8A">缺陷报告</span></h3>
|
||||
<p>下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。</p>
|
||||
<table class="dsctable" style="font-size:0.8em">
|
||||
<tr>
|
||||
<th>DR</th>
|
||||
<th>应用于</th>
|
||||
<th>出版时的行为</th>
|
||||
<th>正确行为</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a rel="nofollow" class="external text" href="https://cplusplus.github.io/LWG/issue3052">LWG 3052</a></td>
|
||||
<td>C++17</td>
|
||||
<td>若 <code>Variants</code> 中的任何类型不是 <span class="t-lc"><a href="cpp-utility-variant.html">std::variant</a></span> 则效果未指定</td>
|
||||
<td>已指定</td>
|
||||
</tr>
|
||||
</table>
|
||||
<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-utility-variant-swap.html"><span class="t-lines"><span>swap</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>与另一 <code>variant</code> 交换<br />
|
||||
<span class="t-mark">(公开成员函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user