Files
hustoj/web/cppreference-zh/chmhelp/cpp-language-function_template.html
2025-08-01 12:57:54 +08:00

1025 lines
137 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>&#20989;&#25968;&#27169;&#26495;</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_language_function_template skin-cppreference2 action-view cpp-navbar">
<div id="cpp-content-base">
<div id="content"><a id="top"></a>
<h1 id="firstHeading" class="firstHeading">&#20989;&#25968;&#27169;&#26495;</h1>
<div id="bodyContent">
<div id="contentSub"><span class="subpages">&lt; <a href="cpp.html">cpp</a>&lrm; | <a href="cpp-language.html">language</a></span></div>
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
<p>&#20989;&#25968;&#27169;&#26495;&#23450;&#20041;&#19968;&#26063;&#20989;&#25968;&#12290;</p>
<h3><span class="mw-headline" id=".E8.AF.AD.E6.B3.95">&#35821;&#27861;</span></h3>
<table class="t-sdsc-begin">
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><code><b>template</b></code> <code><b>&lt;</b></code> <span class="t-spar">&#24418;&#21442;&#21015;&#34920;</span> <code><b>&gt;</b></code> <span class="t-spar">&#20989;&#25968;&#22768;&#26126;</span></td>
<td>(1)</td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><code><b>template</b></code> <code><b>&lt;</b></code> <span class="t-spar">&#24418;&#21442;&#21015;&#34920;</span> <code><b>&gt;</b></code> <code><b>requires</b></code> <span class="t-spar">&#32422;&#26463;</span> <span class="t-spar">&#20989;&#25968;&#22768;&#26126;</span></td>
<td>(2)</td>
<td><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><span class="t-spar">&#24102;&#21344;&#20301;&#31526;&#20989;&#25968;&#22768;&#26126;</span></td>
<td>(3)</td>
<td><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><code><b>export</b></code> <code><b>template</b></code> <code><b>&lt;</b></code> <span class="t-spar">&#24418;&#21442;&#21015;&#34920;</span> <code><b>&gt;</b></code> <span class="t-spar">&#20989;&#25968;&#22768;&#26126;</span></td>
<td>(4)</td>
<td><span class="t-mark-rev t-until-cxx11">(C++11 &#21069;)</span></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E8.A7.A3.E9.87.8A">&#35299;&#37322;</span></h3>
<table class="t-par-begin">
<tr class="t-par">
<td><span class="t-spar">&#24418;&#21442;&#21015;&#34920;</span></td>
<td>-</td>
<td>&#38750;&#31354;&#30340;<a href="cpp-language-template_parameters.html">&#27169;&#26495;&#24418;&#21442;</a>&#30340;&#36887;&#21495;&#20998;&#38548;&#21015;&#34920;&#65292;&#27599;&#39033;&#26159;<a href="cpp-language-template_parameters.html#.E9.9D.9E.E7.B1.BB.E5.9E.8B.E6.A8.A1.E6.9D.BF.E5.BD.A2.E5.8F.82">&#38750;&#31867;&#22411;&#24418;&#21442;</a>&#12289;<a href="cpp-language-template_parameters.html#.E7.B1.BB.E5.9E.8B.E6.A8.A1.E6.9D.BF.E5.BD.A2.E5.8F.82">&#31867;&#22411;&#24418;&#21442;</a>&#12289;<a href="cpp-language-template_parameters.html#.E6.A8.A1.E6.9D.BF.E6.A8.A1.E6.9D.BF.E5.BD.A2.E5.8F.82">&#27169;&#26495;&#24418;&#21442;</a>&#25110;&#36825;&#20123;&#30340;<a href="cpp-language-parameter_pack.html">&#24418;&#21442;&#21253;</a>&#20043;&#19968;&#12290;<span class="t-rev-inl t-since-cxx20"><span>&#19982;&#20219;&#20309;&#27169;&#26495;&#19968;&#26679;&#65292;&#24418;&#21442;&#21487;&#20197;<a href="cpp-language-template_parameters.html#.E5.8F.97.E7.BA.A6.E6.9D.9F.E7.9A.84.E6.A8.A1.E6.9D.BF.E5.BD.A2.E5.8F.82">&#21463;&#32422;&#26463;</a>&#12290;</span> <span><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></span></span></td>
</tr>
<tr class="t-par">
<td><span class="t-spar">&#20989;&#25968;&#22768;&#26126;</span></td>
<td>-</td>
<td><a href="cpp-language-function.html">&#20989;&#25968;&#22768;&#26126;</a>&#12290;&#25152;&#22768;&#26126;&#30340;&#20989;&#25968;&#21517;&#25104;&#20026;&#27169;&#26495;&#21517;&#12290;</td>
</tr>
<tr class="t-par">
<td><span class="t-spar">&#32422;&#26463;</span></td>
<td>-</td>
<td><a href="cpp-language-constraints.html">&#32422;&#26463;&#34920;&#36798;&#24335;</a>&#65292;&#23427;&#38480;&#21046;&#27492;&#20989;&#25968;&#27169;&#26495;&#25509;&#21463;&#30340;&#27169;&#26495;&#24418;&#21442;&#12290;</td>
</tr>
<tr class="t-par">
<td><span class="t-spar">&#24102;&#21344;&#20301;&#31526;&#20989;&#25968;&#22768;&#26126;</span></td>
<td>-</td>
<td><a href="cpp-language-function.html">&#20989;&#25968;&#22768;&#26126;</a>&#65292;&#20854;&#20013;&#33267;&#23569;&#19968;&#20010;&#24418;&#21442;&#30340;&#31867;&#22411;&#20351;&#29992;&#20102;&#21344;&#20301;&#31526; <a href="cpp-language-auto.html"><code>auto</code></a> &#25110; <a href="cpp-concepts.html">&#27010;&#24565; <code>auto</code></a>&#65306;&#27599;&#20010;&#21344;&#20301;&#31526;&#37117;&#20250;&#23545;&#24212;&#27169;&#26495;&#24418;&#21442;&#21015;&#34920;&#20013;&#30340;&#19968;&#20010;&#34394;&#35774;&#24418;&#21442;&#12290;&#65288;&#35265;&#19979;&#25991;&ldquo;&#31616;&#20889;&#20989;&#25968;&#27169;&#26495;&rdquo;&#65289;</td>
</tr>
</table>
<table class="t-rev-begin">
<tr class="t-rev t-until-cxx11">
<td>
<p><code>export</code> &#26159;&#19968;&#20010;&#21487;&#36873;&#30340;&#20462;&#39280;&#31526;&#65292;&#23427;&#22768;&#26126;&#27169;&#26495;<i>&#34987;&#23548;&#20986;</i>&#65288;&#29992;&#20110;&#31867;&#27169;&#26495;&#26102;&#65292;&#23427;&#22768;&#26126;&#25152;&#26377;&#25104;&#21592;&#34987;&#23548;&#20986;&#65289;&#12290;&#23545;&#34987;&#23548;&#20986;&#27169;&#26495;&#36827;&#34892;&#23454;&#20363;&#21270;&#30340;&#25991;&#20214;&#19981;&#38656;&#35201;&#21253;&#21547;&#23427;&#30340;&#23450;&#20041;&#65306;&#22768;&#26126;&#23601;&#36275;&#22815;&#20102;&#12290;<code>export</code> &#30340;&#23454;&#29616;&#31232;&#23569;&#32780;&#19988;&#22312;&#32454;&#33410;&#19978;&#30456;&#20114;&#19981;&#19968;&#33268;&#12290;</p>
</td>
<td><span class="t-mark-rev t-until-cxx11">(C++11 &#21069;)</span></td>
</tr>
</table>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx20">
<td>
<h3><span class="mw-headline" id=".E7.AE.80.E5.86.99.E5.87.BD.E6.95.B0.E6.A8.A1.E6.9D.BF">&#31616;&#20889;&#20989;&#25968;&#27169;&#26495;</span></h3>
<p>&#24403;&#20989;&#25968;&#22768;&#26126;&#25110;&#20989;&#25968;&#27169;&#26495;&#22768;&#26126;&#30340;&#24418;&#21442;&#21015;&#34920;&#20013;&#20986;&#29616;&#21344;&#20301;&#31526;&#31867;&#22411;&#65288;<code>auto</code> &#25110; <a href="cpp-concepts.html">&#27010;&#24565; <code>auto</code></a>&#65289;&#26102;&#65292;&#35813;&#22768;&#26126;&#20250;&#22768;&#26126;&#19968;&#20010;&#20989;&#25968;&#27169;&#26495;&#65292;&#24182;&#19988;&#20026;&#27599;&#20010;&#21344;&#20301;&#31526;&#21521;&#27169;&#26495;&#24418;&#21442;&#21015;&#34920;&#36861;&#21152;&#19968;&#20010;&#34394;&#35774;&#30340;&#27169;&#26495;&#24418;&#21442;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw4">void</span> f1<span class="br0">(</span><span class="kw4">auto</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#19982; template&lt;class T&gt; void f(T) &#30456;&#21516;</span>
<span class="kw4">void</span> f2<span class="br0">(</span>C1 <span class="kw4">auto</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#22914;&#26524; C1 &#26159;&#27010;&#24565;&#65292;&#37027;&#20040;&#19982; template&lt;C1 T&gt; void f2(T) &#30456;&#21516;</span>
<span class="kw4">void</span> f3<span class="br0">(</span>C2 <span class="kw4">auto</span>...<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#22914;&#26524; C2 &#26159;&#27010;&#24565;&#65292;&#37027;&#20040;&#19982; template&lt;C2... Ts&gt; void f3(Ts...) &#30456;&#21516;</span>
<span class="kw4">void</span> f4<span class="br0">(</span><span class="kw4">const</span> C3 <span class="kw4">auto</span><span class="sy2">*</span>, C4 <span class="kw4">auto</span><span class="sy3">&amp;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#19982; template&lt;C3 T, C4 U&gt; void f4(const T*, U&amp;); &#30456;&#21516;</span>
<span class="kw1">template</span> <span class="sy1">&lt;</span><span class="kw1">class</span> T, C U<span class="sy1">&gt;</span>
<span class="kw4">void</span> g<span class="br0">(</span>T x, U y, C <span class="kw4">auto</span> z<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#19982; template&lt;class T, C U, C W&gt; void g(T x, U y, W z); &#30456;&#21516;</span></pre></div>
</div>
<p>&#31616;&#20889;&#20989;&#25968;&#27169;&#26495;&#21487;&#20197;&#21644;&#25152;&#26377;&#20989;&#25968;&#27169;&#26495;&#19968;&#26679;&#36827;&#34892;&#29305;&#21270;&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span><span class="sy1">&lt;&gt;</span>
<span class="kw4">void</span> f4<span class="sy1">&lt;</span><span class="kw4">int</span><span class="sy1">&gt;</span><span class="br0">(</span><span class="kw4">const</span> <span class="kw4">int</span><span class="sy2">*</span>, <span class="kw4">const</span> <span class="kw4">double</span><span class="sy3">&amp;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// f4&lt;int, const double&gt; &#30340;&#29305;&#21270;</span></pre></div>
</div>
<p><br /></p>
</td>
<td><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E5.87.BD.E6.95.B0.E6.A8.A1.E6.9D.BF.E5.AE.9E.E4.BE.8B.E5.8C.96">&#20989;&#25968;&#27169;&#26495;&#23454;&#20363;&#21270;</span></h3>
<p>&#20989;&#25968;&#27169;&#26495;&#33258;&#36523;&#24182;&#19981;&#26159;&#31867;&#22411;&#12289;&#20989;&#25968;&#25110;&#20219;&#20309;&#20854;&#20182;&#23454;&#20307;&#12290;&#19981;&#20250;&#20174;&#21482;&#21253;&#21547;&#27169;&#26495;&#23450;&#20041;&#30340;&#28304;&#25991;&#20214;&#29983;&#25104;&#20219;&#20309;&#20195;&#30721;&#12290;&#27169;&#26495;&#21482;&#26377;&#23454;&#20363;&#21270;&#25165;&#20250;&#26377;&#20195;&#30721;&#20986;&#29616;&#65306;&#24517;&#39035;&#30830;&#23450;&#21508;&#27169;&#26495;&#23454;&#21442;&#65292;&#20351;&#24471;&#32534;&#35793;&#22120;&#33021;&#29983;&#25104;&#23454;&#38469;&#30340;&#20989;&#25968;&#65288;&#25110;&#20174;&#31867;&#27169;&#26495;&#29983;&#25104;&#31867;&#65289;&#12290;</p>
<h4><span class="mw-headline" id=".E6.98.BE.E5.BC.8F.E5.AE.9E.E4.BE.8B.E5.8C.96">&#26174;&#24335;&#23454;&#20363;&#21270;</span></h4>
<table class="t-sdsc-begin">
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><code><b>template</b></code> <span class="t-spar">&#36820;&#22238;&#31867;&#22411;</span> <span class="t-spar">&#21517;&#23383;</span> <code><b>&lt;</b></code> <span class="t-spar">&#23454;&#21442;&#21015;&#34920;</span> <code><b>&gt;</b></code> <code><b>(</b></code> <span class="t-spar">&#24418;&#21442;&#21015;&#34920;</span> <code><b>)</b></code> <code><b>;</b></code></td>
<td>(1)</td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><code><b>template</b></code> <span class="t-spar">&#36820;&#22238;&#31867;&#22411;</span> <span class="t-spar">&#21517;&#23383;</span> <code><b>(</b></code> <span class="t-spar">&#24418;&#21442;&#21015;&#34920;</span> <code><b>)</b></code> <code><b>;</b></code></td>
<td>(2)</td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><code><b>extern</b></code> <code><b>template</b></code> <span class="t-spar">&#36820;&#22238;&#31867;&#22411;</span> <span class="t-spar">&#21517;&#23383;</span> <code><b>&lt;</b></code> <span class="t-spar">&#23454;&#21442;&#21015;&#34920;</span> <code><b>&gt;</b></code> <code><b>(</b></code> <span class="t-spar">&#24418;&#21442;&#21015;&#34920;</span> <code><b>)</b></code> <code><b>;</b></code></td>
<td>(3)</td>
<td><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><code><b>extern</b></code> <code><b>template</b></code> <span class="t-spar">&#36820;&#22238;&#31867;&#22411;</span> <span class="t-spar">&#21517;&#23383;</span> <code><b>(</b></code> <span class="t-spar">&#24418;&#21442;&#21015;&#34920;</span> <code><b>)</b></code> <code><b>;</b></code></td>
<td>(4)</td>
<td><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
</table>
<div class="t-li1"><span class="t-li">1)</span> &#26174;&#24335;&#23454;&#20363;&#21270;&#23450;&#20041;&#65288;&#26174;&#24335;&#25351;&#23450;&#25152;&#26377;&#26080;&#40664;&#35748;&#20540;&#27169;&#26495;&#24418;&#21442;&#26102;&#19981;&#20250;<a href="cpp-language-template_argument_deduction.html">&#25512;&#23548;&#27169;&#26495;&#23454;&#21442;</a>&#65289;</div>
<div class="t-li1"><span class="t-li">2)</span> &#26174;&#24335;&#23454;&#20363;&#21270;&#23450;&#20041;&#65292;&#23545;&#25152;&#26377;&#24418;&#21442;&#36827;&#34892;&#27169;&#26495;&#23454;&#21442;&#25512;&#23548;</div>
<div class="t-li1"><span class="t-li">3)</span> &#26174;&#24335;&#23454;&#20363;&#21270;&#22768;&#26126;&#65288;&#26174;&#24335;&#25351;&#23450;&#25152;&#26377;&#26080;&#40664;&#35748;&#20540;&#27169;&#26495;&#24418;&#21442;&#26102;&#19981;&#20250;&#25512;&#23548;&#27169;&#26495;&#23454;&#21442;&#65289;</div>
<div class="t-li1"><span class="t-li">4)</span> &#26174;&#24335;&#23454;&#20363;&#21270;&#22768;&#26126;&#65292;&#23545;&#25152;&#26377;&#24418;&#21442;&#36827;&#34892;&#27169;&#26495;&#23454;&#21442;&#25512;&#23548;</div>
<p>&#26174;&#24335;&#23454;&#20363;&#21270;&#23450;&#20041;&#24378;&#21046;&#23454;&#20363;&#21270;&#23427;&#25152;&#25351;&#20195;&#30340;&#20989;&#25968;&#25110;&#25104;&#21592;&#20989;&#25968;&#12290;&#23427;&#21487;&#20197;&#20986;&#29616;&#22312;&#31243;&#24207;&#20013;&#27169;&#26495;&#23450;&#20041;&#21518;&#30340;&#20219;&#20309;&#20301;&#32622;&#65292;&#32780;&#23545;&#20110;&#32473;&#23450;&#30340;&#23454;&#21442;&#21015;&#34920;&#65292;&#23427;&#22312;&#25972;&#20010;&#31243;&#24207;&#20013;&#21482;&#33021;&#20986;&#29616;&#19968;&#27425;&#65292;&#19981;&#35201;&#27714;&#35786;&#26029;&#12290;</p>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx11">
<td>
<p>&#26174;&#24335;&#23454;&#20363;&#21270;&#22768;&#26126;&#65288;extern &#27169;&#26495;&#65289;&#38459;&#27490;&#38544;&#24335;&#23454;&#20363;&#21270;&#65306;&#26412;&#26469;&#20250;&#23548;&#33268;&#38544;&#24335;&#23454;&#20363;&#21270;&#30340;&#20195;&#30721;&#24517;&#39035;&#25913;&#20026;&#20351;&#29992;&#24050;&#22312;&#31243;&#24207;&#30340;&#21035;&#22788;&#25152;&#25552;&#20379;&#30340;&#26174;&#24335;&#23454;&#20363;&#21270;&#12290;</p>
</td>
<td><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></td>
</tr>
</table>
<p>&#22312;&#20989;&#25968;&#27169;&#26495;&#29305;&#21270;&#25110;&#25104;&#21592;&#20989;&#25968;&#27169;&#26495;&#29305;&#21270;&#30340;&#26174;&#24335;&#23454;&#20363;&#21270;&#20013;&#65292;&#23614;&#37096;&#30340;&#21508;&#27169;&#26495;&#23454;&#21442;&#22312;&#33021;&#20174;&#20989;&#25968;&#21442;&#25968;<a href="cpp-language-template_argument_deduction.html">&#25512;&#23548;</a>&#26102;&#19981;&#38656;&#35201;&#25351;&#23450;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">typename</span> T<span class="sy1">&gt;</span>
<span class="kw4">void</span> f<span class="br0">(</span>T s<span class="br0">)</span>
<span class="br0">{</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> s <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="kw1">template</span> <span class="kw4">void</span> f<span class="sy1">&lt;</span><span class="kw4">double</span><span class="sy1">&gt;</span><span class="br0">(</span><span class="kw4">double</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#23454;&#20363;&#21270; f&lt;double&gt;(double)</span>
<span class="kw1">template</span> <span class="kw4">void</span> f<span class="sy1">&lt;&gt;</span><span class="br0">(</span><span class="kw4">char</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#23454;&#20363;&#21270; f&lt;char&gt;(char)&#65292;&#25512;&#23548;&#20986;&#27169;&#26495;&#23454;&#21442;</span>
<span class="kw1">template</span> <span class="kw4">void</span> f<span class="br0">(</span><span class="kw4">int</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#23454;&#20363;&#21270; f&lt;int&gt;(int)&#65292;&#25512;&#23548;&#20986;&#27169;&#26495;&#23454;&#21442;</span></pre></div>
</div>
<p>&#20989;&#25968;&#27169;&#26495;&#25110;&#31867;&#27169;&#26495;&#25104;&#21592;&#20989;&#25968;&#30340;&#26174;&#24335;&#23454;&#20363;&#21270;&#19981;&#33021;&#20351;&#29992; <code>inline</code> &#25110; <code>constexpr</code>&#12290;&#22914;&#26524;&#26174;&#24335;&#23454;&#20363;&#21270;&#30340;&#22768;&#26126;&#25351;&#21517;&#20102;&#26576;&#20010;&#38544;&#24335;&#22768;&#26126;&#30340;&#29305;&#27530;&#25104;&#21592;&#20989;&#25968;&#65292;&#37027;&#20040;&#31243;&#24207;&#38750;&#33391;&#26500;&#12290;</p>
<p><a href="cpp-language-constructor.html">&#26500;&#36896;&#20989;&#25968;</a>&#30340;&#26174;&#24335;&#23454;&#20363;&#21270;&#19981;&#33021;&#20351;&#29992;&#27169;&#26495;&#24418;&#21442;&#21015;&#34920;&#65288;&#35821;&#27861; <span class="t-v">(1)</span>&#65289;&#65292;&#20063;&#22987;&#32456;&#19981;&#38656;&#35201;&#20351;&#29992;&#65292;&#22240;&#20026;&#33021;&#25512;&#23548;&#23427;&#20204;&#65288;&#35821;&#27861; <span class="t-v">(2)</span>&#65289;&#12290;</p>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx20">
<td>
<p><a href="cpp-language-destructor.html#.E9.A2.84.E6.9C.9F.E7.9A.84.E6.9E.90.E6.9E.84.E5.87.BD.E6.95.B0">&#39044;&#26399;&#30340;&#26512;&#26500;&#20989;&#25968;</a>&#30340;&#26174;&#24335;&#23454;&#20363;&#21270;&#24517;&#39035;&#25351;&#21517;&#35813;&#31867;&#30340;&#34987;&#36873;&#25321;&#30340;&#26512;&#26500;&#20989;&#25968;&#12290;</p>
</td>
<td><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></td>
</tr>
</table>
<p>&#26174;&#24335;&#23454;&#20363;&#21270;&#22768;&#26126;&#19981;&#20250;&#25233;&#21046; <a href="cpp-language-inline.html">inline</a> &#20989;&#25968;&#65292;<a href="cpp-language-auto.html">auto</a> &#22768;&#26126;&#65292;&#24341;&#29992;&#65292;&#20197;&#21450;&#31867;&#27169;&#26495;&#29305;&#21270;&#30340;&#38544;&#24335;&#23454;&#20363;&#21270;&#12290;&#65288;&#20174;&#32780;&#24403;&#20316;&#20026;&#26174;&#24335;&#23454;&#20363;&#21270;&#22768;&#26126;&#30446;&#26631;&#30340; inline &#20989;&#25968;&#34987; ODR &#24335;&#20351;&#29992;&#26102;&#65292;&#23427;&#20250;&#20026;&#20869;&#32852;&#32780;&#38544;&#24335;&#23454;&#20363;&#21270;&#65292;&#20294;&#27492;&#32763;&#35793;&#21333;&#20803;&#20013;&#19981;&#20250;&#29983;&#25104;&#23427;&#30340;&#38750;&#20869;&#32852;&#21103;&#26412;&#65289;</p>
<p>&#24102;&#26377;<a href="cpp-language-default_arguments.html">&#40664;&#35748;&#23454;&#21442;</a>&#30340;&#20989;&#25968;&#27169;&#26495;&#30340;&#26174;&#24335;&#23454;&#20363;&#21270;&#23450;&#20041;&#19981;&#20250;&#20351;&#29992;&#25110;&#35797;&#22270;&#21021;&#22987;&#21270;&#35813;&#23454;&#21442;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw4">char</span><span class="sy2">*</span> p <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> T g<span class="br0">(</span>T x <span class="sy1">=</span> <span class="sy3">&amp;</span>p<span class="br0">)</span> <span class="br0">{</span> <span class="kw1">return</span> x<span class="sy4">;</span> <span class="br0">}</span>
<span class="kw1">template</span> <span class="kw4">int</span> g<span class="sy1">&lt;</span><span class="kw4">int</span><span class="sy1">&gt;</span><span class="br0">(</span><span class="kw4">int</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// OK&#65292;&#21363;&#20351; &amp;p &#19981;&#26159; int&#12290;</span></pre></div>
</div>
<h4><span class="mw-headline" id=".E9.9A.90.E5.BC.8F.E5.AE.9E.E4.BE.8B.E5.8C.96">&#38544;&#24335;&#23454;&#20363;&#21270;</span></h4>
<p>&#24403;&#20195;&#30721;&#22312;&#35201;&#27714;&#23384;&#22312;&#20989;&#25968;&#23450;&#20041;&#30340;&#35821;&#22659;&#20013;&#25351;&#28041;&#26576;&#20010;&#20989;&#25968;<span class="t-rev-inl t-since-cxx11"><span>&#65292;&#25110;&#23450;&#20041;&#23384;&#22312;&#19982;&#21542;&#20250;&#24433;&#21709;&#31243;&#24207;&#35821;&#20041;</span> <span><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></span></span>&#65292;&#32780;&#36825;&#20010;&#29305;&#23450;&#20989;&#25968;&#23578;&#26410;&#34987;&#26174;&#24335;&#23454;&#20363;&#21270;&#26102;&#65292;&#21457;&#29983;&#38544;&#24335;&#23454;&#20363;&#21270;&#12290;&#22914;&#26524;&#27169;&#26495;&#23454;&#21442;&#21015;&#34920;&#33021;&#20174;&#35821;&#22659;<a href="cpp-language-template_argument_deduction.html">&#25512;&#23548;</a>&#65292;&#37027;&#20040;&#19981;&#24517;&#25552;&#20379;&#23427;&#12290;</p>
<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 &lt;iostream&gt;</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">typename</span> T<span class="sy1">&gt;</span>
<span class="kw4">void</span> f<span class="br0">(</span>T s<span class="br0">)</span>
<span class="br0">{</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> s <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
f<span class="sy1">&lt;</span><span class="kw4">double</span><span class="sy1">&gt;</span><span class="br0">(</span><span class="nu0">1</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#23454;&#20363;&#21270;&#24182;&#35843;&#29992; f&lt;double&gt;(double)</span>
f<span class="sy1">&lt;&gt;</span><span class="br0">(</span><span class="st0">&#39;a&#39;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#23454;&#20363;&#21270;&#24182;&#35843;&#29992; f&lt;char&gt;(char)</span>
f<span class="br0">(</span><span class="nu0">7</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#23454;&#20363;&#21270;&#24182;&#35843;&#29992; f&lt;int&gt;(int)</span>
<span class="kw4">void</span> <span class="br0">(</span><span class="sy2">*</span>pf<span class="br0">)</span><span class="br0">(</span><a href="cpp-string-basic_string.html"><span class="kw1230">std::<span class="me2">string</span></span></a><span class="br0">)</span> <span class="sy1">=</span> f<span class="sy4">;</span> <span class="co1">// &#23454;&#20363;&#21270; f&lt;string&gt;(string)</span>
pf<span class="br0">(</span><span class="st0">&quot;&nabla;&quot;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992; f&lt;string&gt;(string)</span>
<span class="br0">}</span></pre></div>
</div>
</div>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx11">
<td>
<p>&#22914;&#26524;&#26377;&#34920;&#36798;&#24335;&#38656;&#35201;&#26576;&#20989;&#25968;<a href="cpp-language-constant_expression.html#.E5.B8.B8.E9.87.8F.E6.B1.82.E5.80.BC.E6.89.80.E9.9C.80.E8.A6.81.E7.9A.84.E5.87.BD.E6.95.B0.E4.B8.8E.E5.8F.98.E9.87.8F">&#36827;&#34892;&#24120;&#37327;&#27714;&#20540;</a>&#65292;&#37027;&#20040;&#20989;&#25968;&#23450;&#20041;&#23384;&#22312;&#19982;&#21542;&#20250;&#24433;&#21709;&#31243;&#24207;&#35821;&#20041;&#65292;&#21363;&#20351;&#19981;&#35201;&#27714;&#24120;&#37327;&#27714;&#20540;&#34920;&#36798;&#24335;&#65292;&#25110;&#24120;&#37327;&#34920;&#36798;&#24335;&#27714;&#20540;&#19981;&#20351;&#29992;&#35813;&#23450;&#20041;&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">typename</span> T<span class="sy1">&gt;</span> <span class="kw4">constexpr</span> <span class="kw4">int</span> f<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw1">return</span> T<span class="sy4">::</span><span class="me2">value</span><span class="sy4">;</span> <span class="br0">}</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw4">bool</span> B, <span class="kw1">typename</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> g<span class="br0">(</span>decltype<span class="br0">(</span>B <span class="sy4">?</span> f<span class="sy1">&lt;</span>T<span class="sy1">&gt;</span><span class="br0">(</span><span class="br0">)</span> <span class="sy4">:</span> <span class="nu0">0</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw4">bool</span> B, <span class="kw1">typename</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> g<span class="br0">(</span>...<span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw4">bool</span> B, <span class="kw1">typename</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> h<span class="br0">(</span>decltype<span class="br0">(</span><span class="kw4">int</span><span class="br0">{</span>B <span class="sy4">?</span> f<span class="sy1">&lt;</span>T<span class="sy1">&gt;</span><span class="br0">(</span><span class="br0">)</span> <span class="sy4">:</span> <span class="nu0">0</span><span class="br0">}</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw4">bool</span> B, <span class="kw1">typename</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> h<span class="br0">(</span>...<span class="br0">)</span><span class="sy4">;</span>
<span class="kw4">void</span> x<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
g<span class="sy1">&lt;</span><span class="kw2">false</span>, <span class="kw4">int</span><span class="sy1">&gt;</span><span class="br0">(</span><span class="nu0">0</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// OK&#65306; B ? f&lt;T&gt;() : 0 &#19981;&#20250;&#28508;&#22312;&#24120;&#37327;&#27714;&#20540;</span>
h<span class="sy1">&lt;</span><span class="kw2">false</span>, <span class="kw4">int</span><span class="sy1">&gt;</span><span class="br0">(</span><span class="nu0">0</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#38169;&#35823;&#65306;&#21363;&#20351; B &#27714;&#20540;&#20026; false &#19988;&#20174; int &#21040; int &#30340;&#21015;&#34920;&#21021;&#22987;&#21270;&#19981;&#21487;&#33021;&#26159;&#31364;&#21270;</span>
<span class="co1">// &#20173;&#23454;&#20363;&#21270; f&lt;int&gt;</span>
<span class="br0">}</span></pre></div>
</div>
</td>
<td><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></td>
</tr>
</table>
<p>&#27880;&#24847;&#65306;&#23436;&#20840;&#30465;&#30053; <code>&lt;&gt;</code> &#20801;&#35768;<a href="cpp-language-overload_resolution.html">&#37325;&#36733;&#20915;&#35758;</a>&#21516;&#26102;&#26816;&#39564;&#27169;&#26495;&#19982;&#38750;&#27169;&#26495;&#37325;&#36733;&#12290;</p>
<h3><span class="mw-headline" id=".E6.A8.A1.E6.9D.BF.E5.AE.9E.E5.8F.82.E6.8E.A8.E5.AF.BC">&#27169;&#26495;&#23454;&#21442;&#25512;&#23548;</span></h3>
<p>&#23454;&#20363;&#21270;&#19968;&#20010;&#20989;&#25968;&#27169;&#26495;&#38656;&#35201;&#30693;&#36947;&#23427;&#30340;&#25152;&#26377;&#27169;&#26495;&#23454;&#21442;&#65292;&#20294;&#19981;&#38656;&#35201;&#25351;&#23450;&#27599;&#20010;&#27169;&#26495;&#23454;&#21442;&#12290;&#32534;&#35793;&#22120;&#20250;&#23613;&#21487;&#33021;&#20174;&#20989;&#25968;&#23454;&#21442;&#25512;&#23548;&#32570;&#22833;&#30340;&#27169;&#26495;&#23454;&#21442;&#12290;&#36825;&#20250;&#22312;&#23581;&#35797;&#36827;&#34892;&#20989;&#25968;&#35843;&#29992;&#20197;&#21450;&#21462;&#20989;&#25968;&#27169;&#26495;&#30340;&#22320;&#22336;&#26102;&#21457;&#29983;&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">typename</span> To, <span class="kw1">typename</span> From<span class="sy1">&gt;</span> To convert<span class="br0">(</span>From f<span class="br0">)</span><span class="sy4">;</span>
<span class="kw4">void</span> g<span class="br0">(</span><span class="kw4">double</span> d<span class="br0">)</span>
<span class="br0">{</span>
<span class="kw4">int</span> i <span class="sy1">=</span> convert<span class="sy1">&lt;</span><span class="kw4">int</span><span class="sy1">&gt;</span><span class="br0">(</span>d<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992; convert&lt;int,double&gt;(double)</span>
<span class="kw4">char</span> c <span class="sy1">=</span> convert<span class="sy1">&lt;</span><span class="kw4">char</span><span class="sy1">&gt;</span><span class="br0">(</span>d<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992; convert&lt;char,double&gt;(double)</span>
<span class="kw4">int</span><span class="br0">(</span><span class="sy2">*</span>ptr<span class="br0">)</span><span class="br0">(</span><span class="kw4">float</span><span class="br0">)</span> <span class="sy1">=</span> convert<span class="sy4">;</span> <span class="co1">// &#23454;&#20363;&#21270; convert&lt;int, float&gt;(float)</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#27169;&#26495;&#36816;&#31639;&#31526;&#20381;&#36182;&#27492;&#26426;&#21046;&#65292;&#22240;&#20026;&#38500;&#20102;&#23558;&#23427;&#37325;&#20889;&#20026;&#20989;&#25968;&#35843;&#29992;&#34920;&#36798;&#24335;&#20043;&#22806;&#65292;&#19981;&#23384;&#22312;&#20026;&#36816;&#31639;&#31526;&#25351;&#23450;&#27169;&#26495;&#23454;&#21442;&#30340;&#35821;&#27861;&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="co2">#include &lt;iostream&gt;</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;Hello, world&quot;</span> <span class="sy1">&lt;&lt;</span> <a href="cpp-io-manip-endl.html"><span class="kw1791">std::<span class="me2">endl</span></span></a><span class="sy4">;</span>
<span class="co1">// operator&lt;&lt; &#32463;&#30001; ADL &#26597;&#25214;&#20026; std::operator&lt;&lt;&#65292;</span>
<span class="co1">// &#28982;&#21518;&#25512;&#23548;&#20986; operator&lt;&lt;&lt;char, std::char_traits&lt;char&gt;&gt;</span>
<span class="co1">// &#21516;&#26102;&#25512;&#23548; std::endl &#20026; &amp;std::endl&lt;char, std::char_traits&lt;char&gt;&gt;</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#27169;&#26495;&#23454;&#21442;&#25512;&#23548;&#22312;&#20989;&#25968;&#27169;&#26495;&#30340;<a href="cpp-language-lookup.html">&#21517;&#23383;&#26597;&#25214;</a>&#65288;&#21487;&#33021;&#28041;&#21450;<a href="cpp-language-adl.html">&#23454;&#21442;&#20381;&#36182;&#26597;&#25214;</a>&#65289;&#20043;&#21518;&#65292;<a href="cpp-language-overload_resolution.html">&#37325;&#36733;&#20915;&#35758;</a>&#20043;&#21069;&#36827;&#34892;&#12290;</p>
<p>&#32454;&#33410;&#35265;<a href="cpp-language-template_argument_deduction.html">&#27169;&#26495;&#23454;&#21442;&#25512;&#23548;</a>&#12290;</p>
<h3><span class="mw-headline" id=".E6.98.BE.E5.BC.8F.E6.A8.A1.E6.9D.BF.E5.AE.9E.E5.8F.82">&#26174;&#24335;&#27169;&#26495;&#23454;&#21442;</span></h3>
<p>&#20989;&#25968;&#27169;&#26495;&#30340;&#27169;&#26495;&#23454;&#21442;&#21487;&#20174;&#20197;&#19979;&#36884;&#24452;&#33719;&#24471;&#65306;</p>
<ul>
<li>&#27169;&#26495;&#23454;&#21442;&#25512;&#23548;</li>
<li>&#40664;&#35748;&#27169;&#26495;&#23454;&#21442;</li>
<li>&#26174;&#24335;&#25351;&#23450;&#65292;&#21487;&#20197;&#22312;&#19979;&#21015;&#35821;&#22659;&#20013;&#36827;&#34892;&#65306;</li>
</ul>
<dl>
<dd>
<ul>
<li>&#22312;&#20989;&#25968;&#35843;&#29992;&#34920;&#36798;&#24335;&#20013;</li>
<li>&#24403;&#21462;&#20989;&#25968;&#22320;&#22336;&#26102;</li>
<li>&#24403;&#21021;&#22987;&#21270;&#21040;&#20989;&#25968;&#30340;&#24341;&#29992;&#26102;</li>
<li>&#24403;&#26500;&#25104;&#25104;&#21592;&#20989;&#25968;&#25351;&#38024;&#26102;</li>
<li>&#22312;&#26174;&#24335;&#29305;&#21270;&#20013;</li>
<li>&#22312;&#26174;&#24335;&#23454;&#20363;&#21270;&#20013;</li>
<li>&#22312;&#21451;&#20803;&#22768;&#26126;&#20013;</li>
</ul>
</dd>
</dl>
<p>&#19981;&#23384;&#22312;&#20026;<a href="cpp-language-operators.html">&#37325;&#36733;&#30340;&#36816;&#31639;&#31526;</a>&#12289;<a href="cpp-language-cast_operator.html">&#36716;&#25442;&#20989;&#25968;</a>&#21644;&#26500;&#36896;&#20989;&#25968;&#26174;&#24335;&#25351;&#23450;&#27169;&#26495;&#23454;&#21442;&#30340;&#26041;&#27861;&#65292;&#22240;&#20026;&#23427;&#20204;&#19981;&#20250;&#36890;&#36807;&#20989;&#25968;&#21517;&#35843;&#29992;&#12290;</p>
<p>&#25152;&#25351;&#23450;&#30340;&#21508;&#27169;&#26495;&#23454;&#21442;&#24517;&#39035;&#19982;&#21508;&#27169;&#26495;&#24418;&#21442;&#22312;&#31181;&#31867;&#19978;&#30456;&#21305;&#37197;&#65288;&#21363;&#31867;&#22411;&#23545;&#31867;&#22411;&#65292;&#38750;&#31867;&#22411;&#23545;&#38750;&#31867;&#22411;&#65292;&#27169;&#26495;&#23545;&#27169;&#26495;&#65289;&#12290;&#23454;&#21442;&#30340;&#25968;&#37327;&#19981;&#33021;&#22810;&#20110;&#24418;&#21442;&#65288;&#38500;&#38750;&#24418;&#21442;&#20013;&#26377;&#24418;&#21442;&#21253;&#65292;&#36825;&#31181;&#24773;&#20917;&#19979;&#27599;&#20010;&#38750;&#21253;&#24418;&#21442;&#24517;&#39035;&#23545;&#24212;&#19968;&#20010;&#23454;&#21442;&#65289;&#12290;</p>
<p>&#25152;&#25351;&#23450;&#30340;&#38750;&#31867;&#22411;&#23454;&#21442;&#24517;&#39035;&#35201;&#20040;&#19982;&#20854;&#23545;&#24212;&#30340;&#38750;&#31867;&#22411;&#27169;&#26495;&#24418;&#21442;&#30340;&#31867;&#22411;&#30456;&#21305;&#37197;&#65292;&#35201;&#20040;<a href="cpp-language-template_parameters.html#.E6.A8.A1.E6.9D.BF.E9.9D.9E.E7.B1.BB.E5.9E.8B.E5.AE.9E.E5.8F.82">&#21487;&#20197;&#36716;&#25442;&#21040;&#36825;&#20123;&#31867;&#22411;</a>&#12290;</p>
<p>&#19981;&#21442;&#19982;&#27169;&#26495;&#23454;&#21442;&#25512;&#23548;&#30340;&#20989;&#25968;&#23454;&#21442;&#65288;&#20363;&#22914;&#23545;&#24212;&#30340;&#27169;&#26495;&#23454;&#21442;&#24050;&#32463;&#34987;&#26174;&#24335;&#25351;&#23450;&#65289;&#20250;&#21442;&#19982;&#21040;&#23427;&#23545;&#24212;&#30340;&#20989;&#25968;&#24418;&#21442;&#30340;&#31867;&#22411;&#30340;&#38544;&#24335;&#36716;&#25442;&#65288;&#22914;&#22312;&#36890;&#24120;<a href="cpp-language-overload_resolution.html">&#37325;&#36733;&#20915;&#35758;</a>&#20013;&#19968;&#26679;&#65289;&#12290;</p>
<p>&#24403;&#26377;&#39069;&#22806;&#30340;&#23454;&#21442;&#26102;&#65292;&#27169;&#26495;&#23454;&#21442;&#25512;&#23548;&#21487;&#20197;&#25193;&#20805;&#26174;&#24335;&#25351;&#23450;&#30340;&#27169;&#26495;&#24418;&#21442;&#21253;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> ... <span class="me1">Types</span><span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>Types ... <span class="me1">values</span><span class="br0">)</span><span class="sy4">;</span>
<span class="kw4">void</span> g<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
f<span class="sy1">&lt;</span><span class="kw4">int</span><span class="sy2">*</span>, <span class="kw4">float</span><span class="sy2">*</span><span class="sy1">&gt;</span><span class="br0">(</span><span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// Types = {int*, float*, int}</span>
<span class="br0">}</span></pre></div>
</div>
<h3><span class="mw-headline" id=".E6.A8.A1.E6.9D.BF.E5.AE.9E.E5.8F.82.E6.9B.BF.E6.8D.A2">&#27169;&#26495;&#23454;&#21442;&#26367;&#25442;</span></h3>
<p>&#24403;&#24050;&#32463;&#25351;&#23450;&#12289;&#25512;&#23548;&#20986;&#25110;&#20174;&#40664;&#35748;&#27169;&#26495;&#23454;&#21442;&#33719;&#24471;&#20102;&#25152;&#26377;&#30340;&#27169;&#26495;&#23454;&#21442;&#20043;&#21518;&#65292;&#20989;&#25968;&#24418;&#21442;&#21015;&#34920;&#20013;&#23545;&#27169;&#26495;&#24418;&#21442;&#30340;&#27599;&#27425;&#20351;&#29992;&#37117;&#20250;&#34987;&#26367;&#25442;&#25104;&#23545;&#24212;&#30340;&#27169;&#26495;&#23454;&#21442;&#12290;</p>
<p>&#20989;&#25968;&#27169;&#26495;&#22312;&#26367;&#25442;&#22833;&#36133;&#26102;&#65288;&#21363;&#20197;&#25512;&#23548;&#25110;&#25552;&#20379;&#30340;&#27169;&#26495;&#23454;&#21442;&#26367;&#25442;&#27169;&#26495;&#24418;&#21442;&#22833;&#36133;&#65289;&#20250;&#20174;<a href="cpp-language-overload_resolution.html">&#37325;&#36733;&#38598;</a>&#20013;&#31227;&#38500;&#12290;&#36825;&#26679;&#23601;&#26377;&#35768;&#22810;&#26041;&#24335;&#36890;&#36807;&#27169;&#26495;&#20803;&#32534;&#31243;&#26469;&#25805;&#20316;&#37325;&#36733;&#38598;&#65306;&#32454;&#33410;&#35265; <a href="cpp-language-sfinae.html">SFINAE</a>&#12290;</p>
<p>&#26367;&#25442;&#20043;&#21518;&#65292;&#25152;&#26377;&#25968;&#32452;&#21644;&#20989;&#25968;&#31867;&#22411;&#30340;&#20989;&#25968;&#24418;&#21442;&#37117;&#34987;&#35843;&#25972;&#20026;&#25351;&#38024;&#65292;&#19988;&#25152;&#26377;&#20989;&#25968;&#24418;&#21442;&#37117;&#20250;&#31227;&#38500;&#39030;&#23618; cv &#38480;&#23450;&#65288;&#22914;&#22312;&#24120;&#35268;<a href="cpp-language-function.html#.E5.87.BD.E6.95.B0.E5.A3.B0.E6.98.8E">&#20989;&#25968;&#22768;&#26126;</a>&#20013;&#19968;&#26679;&#65289;&#12290;</p>
<p>&#31227;&#38500;&#39030;&#23618; cv &#38480;&#23450;&#24182;&#19981;&#20250;&#24433;&#21709;&#24418;&#21442;&#22312;&#20989;&#25968;&#20869;&#23637;&#29616;&#30340;&#31867;&#22411;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span> <span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>T t<span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">template</span> <span class="sy1">&lt;</span><span class="kw1">class</span> X<span class="sy1">&gt;</span> <span class="kw4">void</span> g<span class="br0">(</span><span class="kw4">const</span> X x<span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">template</span> <span class="sy1">&lt;</span><span class="kw1">class</span> Z<span class="sy1">&gt;</span> <span class="kw4">void</span> h<span class="br0">(</span>Z z, Z<span class="sy2">*</span> zp<span class="br0">)</span><span class="sy4">;</span>
<span class="co1">// &#20004;&#20010;&#19981;&#21516;&#30340;&#20989;&#25968;&#30340;&#31867;&#22411;&#30456;&#21516;&#65292;&#20294; t &#22312;&#36825;&#20123;&#20989;&#25968;&#20013;&#26377;&#19981;&#21516;&#30340; cv &#38480;&#23450;</span>
f<span class="sy1">&lt;</span><span class="kw4">int</span><span class="sy1">&gt;</span><span class="br0">(</span><span class="nu0">1</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#20989;&#25968;&#31867;&#22411;&#26159; void(int)&#65292;t &#26159; int</span>
f<span class="sy1">&lt;</span><span class="kw4">const</span> <span class="kw4">int</span><span class="sy1">&gt;</span><span class="br0">(</span><span class="nu0">1</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#20989;&#25968;&#31867;&#22411;&#26159; void(int)&#65292;t &#26159; const int</span>
<span class="co1">// &#20004;&#20010;&#19981;&#21516;&#30340;&#20989;&#25968;&#30340;&#31867;&#22411;&#21644; x &#30456;&#21516;</span>
<span class="co1">// &#65288;&#25351;&#21521;&#36825;&#20004;&#20010;&#20989;&#25968;&#30340;&#25351;&#38024;&#19981;&#30456;&#31561;&#65292;&#19988;&#20989;&#25968;&#23616;&#37096;&#30340;&#38745;&#24577;&#21464;&#37327;&#21487;&#20197;&#25317;&#26377;&#19981;&#21516;&#22320;&#22336;&#65289;</span>
g<span class="sy1">&lt;</span><span class="kw4">int</span><span class="sy1">&gt;</span><span class="br0">(</span><span class="nu0">1</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#20989;&#25968;&#31867;&#22411;&#26159; void(int)&#65292;x &#26159; const int</span>
g<span class="sy1">&lt;</span><span class="kw4">const</span> <span class="kw4">int</span><span class="sy1">&gt;</span><span class="br0">(</span><span class="nu0">1</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#20989;&#25968;&#31867;&#22411;&#26159; void(int)&#65292;x &#26159; const int</span>
<span class="co1">// &#21482;&#31227;&#38500;&#39030;&#23618; cv &#38480;&#23450;&#65306;</span>
h<span class="sy1">&lt;</span><span class="kw4">const</span> <span class="kw4">int</span><span class="sy1">&gt;</span><span class="br0">(</span><span class="nu0">1</span>, <a href="cpp-types-NULL.html"><span class="kw103">NULL</span></a><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#20989;&#25968;&#31867;&#22411;&#26159; void(int, const int*) </span>
<span class="co1">// z &#26159; const int&#65292;zp &#26159; int*</span></pre></div>
</div>
<h3><span class="mw-headline" id=".E5.87.BD.E6.95.B0.E6.A8.A1.E6.9D.BF.E9.87.8D.E8.BD.BD">&#20989;&#25968;&#27169;&#26495;&#37325;&#36733;</span></h3>
<p>&#20989;&#25968;&#27169;&#26495;&#19982;&#38750;&#27169;&#26495;&#20989;&#25968;&#21487;&#20197;&#37325;&#36733;&#12290;</p>
<p>&#38750;&#27169;&#26495;&#20989;&#25968;&#19982;&#20855;&#26377;&#30456;&#21516;&#31867;&#22411;&#30340;&#27169;&#26495;&#29305;&#21270;&#22987;&#32456;&#19981;&#21516;&#12290;&#21363;&#20351;&#20855;&#26377;&#30456;&#21516;&#31867;&#22411;&#65292;&#19981;&#21516;&#20989;&#25968;&#27169;&#26495;&#30340;&#29305;&#21270;&#20063;&#22987;&#32456;&#20114;&#19981;&#30456;&#21516;&#12290;&#20004;&#20010;&#20855;&#26377;&#30456;&#21516;&#36820;&#22238;&#31867;&#22411;&#21644;&#30456;&#21516;&#24418;&#21442;&#21015;&#34920;&#30340;&#20989;&#25968;&#27169;&#26495;&#26159;&#19981;&#21516;&#30340;&#65292;&#32780;&#19988;&#21487;&#20197;&#29992;&#26174;&#24335;&#27169;&#26495;&#23454;&#21442;&#21015;&#34920;&#36827;&#34892;&#21306;&#20998;&#12290;</p>
<p>&#24403;&#20351;&#29992;&#20102;&#31867;&#22411;&#25110;&#38750;&#31867;&#22411;&#27169;&#26495;&#24418;&#21442;&#30340;&#34920;&#36798;&#24335;&#22312;&#20989;&#25968;&#24418;&#21442;&#21015;&#34920;&#25110;&#36820;&#22238;&#31867;&#22411;&#20013;&#20986;&#29616;&#26102;&#65292;&#35813;&#34920;&#36798;&#24335;&#20250;&#20026;&#20102;&#37325;&#36733;&#32780;&#20445;&#30041;&#20026;&#20989;&#25968;&#27169;&#26495;&#31614;&#21517;&#30340;&#19968;&#37096;&#20998;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw4">int</span> I, <span class="kw4">int</span> J<span class="sy1">&gt;</span> A<span class="sy1">&lt;</span>I<span class="sy2">+</span>J<span class="sy1">&gt;</span> f<span class="br0">(</span>A<span class="sy1">&lt;</span>I<span class="sy1">&gt;</span>, A<span class="sy1">&lt;</span>J<span class="sy1">&gt;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#37325;&#36733; #1</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw4">int</span> K, <span class="kw4">int</span> L<span class="sy1">&gt;</span> A<span class="sy1">&lt;</span>K<span class="sy2">+</span>L<span class="sy1">&gt;</span> f<span class="br0">(</span>A<span class="sy1">&lt;</span>K<span class="sy1">&gt;</span>, A<span class="sy1">&lt;</span>L<span class="sy1">&gt;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#21516; #1</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw4">int</span> I, <span class="kw4">int</span> J<span class="sy1">&gt;</span> A<span class="sy1">&lt;</span>I<span class="sy2">-</span>J<span class="sy1">&gt;</span> f<span class="br0">(</span>A<span class="sy1">&lt;</span>I<span class="sy1">&gt;</span>, A<span class="sy1">&lt;</span>J<span class="sy1">&gt;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#37325;&#36733; #2</span></pre></div>
</div>
<p>&#23545;&#20110;&#20004;&#20010;&#28041;&#21450;&#27169;&#26495;&#24418;&#21442;&#30340;&#34920;&#36798;&#24335;&#65292;&#22914;&#26524;&#20004;&#20010;&#21253;&#21547;&#36825;&#20123;&#34920;&#36798;&#24335;&#30340;&#20989;&#25968;&#23450;&#20041;&#26681;&#25454; <a href="cpp-language-definition.html#.E5.8D.95.E4.B8.80.E5.AE.9A.E4.B9.89.E8.A7.84.E5.88.99.EF.BC.88ODR.EF.BC.89">&#21333;&#19968;&#23450;&#20041;&#35268;&#21017;</a>&#30456;&#21516;&#65292;&#37027;&#20040;&#31216;&#23427;&#20204;<i>&#31561;&#20215;</i>&#65292;&#23601;&#26159;&#35828;&#65292;&#38500;&#20102;&#27169;&#26495;&#24418;&#21442;&#30340;&#21629;&#21517;&#21487;&#20197;&#19981;&#21516;&#20043;&#22806;&#65292;&#36825;&#20004;&#20010;&#34920;&#36798;&#24335;&#21547;&#26377;&#30456;&#21516;&#30340;&#35760;&#21495;&#24207;&#21015;&#65292;&#20854;&#20013;&#30340;&#21508;&#20010;&#21517;&#23383;&#36890;&#36807;&#21517;&#23383;&#26597;&#25214;&#37117;&#35299;&#26512;&#21040;&#30456;&#21516;&#30340;&#23454;&#20307;&#12290;<span class="t-rev-inl t-since-cxx20"><span>&#20004;&#20010; <a href="cpp-language-lambda.html">lambda &#34920;&#36798;&#24335;</a>&#22987;&#32456;&#19981;&#31561;&#20215;&#12290;</span> <span><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></span></span></p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span> <span class="sy1">&lt;</span><span class="kw4">int</span> I, <span class="kw4">int</span> J<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>A<span class="sy1">&lt;</span>I<span class="sy2">+</span>J<span class="sy1">&gt;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#27169;&#26495;&#37325;&#36733; #1</span>
<span class="kw1">template</span> <span class="sy1">&lt;</span><span class="kw4">int</span> K, <span class="kw4">int</span> L<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>A<span class="sy1">&lt;</span>K<span class="sy2">+</span>L<span class="sy1">&gt;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#31561;&#20215;&#20110; #1</span></pre></div>
</div>
<p>&#22312;&#30830;&#23450;&#20004;&#20010;<a href="cpp-language-dependent_name.html">&#24453;&#20915;&#34920;&#36798;&#24335;</a>&#26159;&#21542;&#31561;&#20215;&#26102;&#65292;&#21482;&#32771;&#34385;&#20854;&#20013;&#25152;&#28041;&#21450;&#30340;&#21508;&#24453;&#20915;&#21517;&#65292;&#32780;&#19981;&#32771;&#34385;&#21517;&#23383;&#26597;&#25214;&#30340;&#32467;&#26524;&#12290;&#22914;&#26524;&#30456;&#21516;&#27169;&#26495;&#30340;&#22810;&#20010;&#22768;&#26126;&#22312;&#21517;&#23383;&#26597;&#25214;&#30340;&#32467;&#26524;&#19978;&#26377;&#25152;&#19981;&#21516;&#65292;&#37027;&#20040;&#20351;&#29992;&#23427;&#20204;&#20013;&#30340;&#31532;&#19968;&#20010;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span> <span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> decltype<span class="br0">(</span>g<span class="br0">(</span>T<span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="br0">)</span> h<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// decltype(g(T())) &#26159;&#24453;&#20915;&#31867;&#22411;</span>
<span class="kw4">int</span> g<span class="br0">(</span><span class="kw4">int</span><span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">template</span> <span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> decltype<span class="br0">(</span>g<span class="br0">(</span>T<span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="br0">)</span> h<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> <span class="co1">// h() &#30340;&#20877;&#22768;&#26126;&#20351;&#29992;&#36739;&#26089;&#30340;&#26597;&#25214;&#65292;</span>
<span class="kw1">return</span> g<span class="br0">(</span>T<span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#23613;&#31649;&#27492;&#22788;&#30340;&#26597;&#25214;&#25214;&#21040;&#20102; g(int)</span>
<span class="br0">}</span>
<span class="kw4">int</span> i <span class="sy1">=</span> h<span class="sy1">&lt;</span><span class="kw4">int</span><span class="sy1">&gt;</span><span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#27169;&#26495;&#23454;&#21442;&#26367;&#25442;&#22833;&#36133;&#65307;g(int) &#19981;&#22312; h() &#30340;&#39318;&#20010;&#22768;&#26126;&#22788;&#30340;&#20316;&#29992;&#22495;&#20013;</span></pre></div>
</div>
<p>&#24403;&#28385;&#36275;&#19979;&#21015;&#26465;&#20214;&#26102;&#65292;&#35748;&#20026;&#20004;&#20010;&#20989;&#25968;&#27169;&#26495;<i>&#31561;&#20215;</i>&#65306;</p>
<ul>
<li>&#23427;&#20204;&#22312;&#21516;&#19968;&#20316;&#29992;&#22495;&#22768;&#26126;</li>
<li>&#23427;&#20204;&#20855;&#26377;&#30456;&#21516;&#30340;&#21517;&#23383;</li>
<li>&#23427;&#20204;&#25317;&#26377;<i>&#31561;&#20215;</i>&#30340;&#27169;&#26495;&#24418;&#21442;&#21015;&#34920;&#65292;&#24847;&#24605;&#26159;&#21015;&#34920;&#38271;&#24230;&#30456;&#21516;&#65292;&#19988;&#27599;&#23545;&#23545;&#24212;&#30340;&#24418;&#21442;&#22343;&#28385;&#36275;&#19979;&#21015;&#26465;&#20214;&#65306;</li>
</ul>
<dl>
<dd>
<ul>
<li>&#20004;&#20010;&#24418;&#21442;&#30340;&#31181;&#31867;&#30456;&#21516;&#65288;&#37117;&#26159;&#31867;&#22411;&#12289;&#37117;&#26159;&#38750;&#31867;&#22411;&#25110;&#37117;&#26159;&#27169;&#26495;&#65289;&#65292;</li>
<li>&#23427;&#20204;&#37117;&#26159;&#24418;&#21442;&#21253;&#25110;&#37117;&#19981;&#26159;&#65292;</li>
<li>&#22914;&#26524;&#26159;&#38750;&#31867;&#22411;&#65292;&#37027;&#20040;&#23427;&#20204;&#30340;&#31867;&#22411;&#31561;&#20215;&#65292;</li>
<li>&#22914;&#26524;&#26159;&#27169;&#26495;&#65292;&#37027;&#20040;&#23427;&#20204;&#30340;&#27169;&#26495;&#24418;&#21442;&#31561;&#20215;&#65292;</li>
</ul>
</dd>
</dl>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx20">
<td>
<dl>
<dd>
<ul>
<li>&#22914;&#26524;&#26377;&#19968;&#20010;&#22768;&#26126;&#24102;&#27010;&#24565;&#21517;&#65292;&#37027;&#20040;&#21478;&#19968;&#20010;&#20063;&#26377;&#31561;&#20215;&#30340;&#27010;&#24565;&#21517;&#12290;</li>
</ul>
</dd>
</dl>
</td>
<td><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></td>
</tr>
</table>
<ul>
<li>&#23427;&#20204;&#30340;&#36820;&#22238;&#31867;&#22411;&#21644;&#24418;&#21442;&#21015;&#34920;&#20013;&#25152;&#26377;&#28041;&#21450;&#27169;&#26495;&#23454;&#21442;&#30340;&#34920;&#36798;&#24335;&#22343;<i>&#31561;&#20215;</i></li>
</ul>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx20">
<td>
<ul>
<li>&#27169;&#26495;&#24418;&#21442;&#21015;&#34920;&#20043;&#21518;&#30340; requires &#23376;&#21477;&#65288;&#22914;&#26524;&#23384;&#22312;&#65289;&#20013;&#30340;&#21508;&#20010;&#34920;&#36798;&#24335;&#22343;&#31561;&#20215;</li>
<li>&#20989;&#25968;&#22768;&#26126;&#31526;&#20043;&#21518;&#30340; requires &#23376;&#21477;&#65288;&#22914;&#26524;&#23384;&#22312;&#65289;&#20013;&#30340;&#21508;&#20010;&#34920;&#36798;&#24335;&#22343;&#31561;&#20215;</li>
</ul>
</td>
<td><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></td>
</tr>
</table>
<p>&#23545;&#20110;&#20004;&#20010;&#28041;&#21450;&#27169;&#26495;&#24418;&#21442;&#30340;&#34920;&#36798;&#24335;&#65292;&#22914;&#26524;&#23427;&#20204;&#19981;<i>&#31561;&#20215;</i>&#20294;&#23427;&#20204;&#23545;&#20110;&#20219;&#20309;&#32473;&#23450;&#30340;&#27169;&#26495;&#23454;&#21442;&#38598;&#30340;&#27714;&#20540;&#37117;&#20135;&#29983;&#30456;&#21516;&#30340;&#20540;&#65292;&#37027;&#20040;&#31216;&#23427;&#20204;<i>&#21151;&#33021;&#31561;&#20215;</i>&#12290;</p>
<p>&#22914;&#26524;&#20004;&#20010;&#20989;&#25968;&#27169;&#26495;&#26412;&#26469;&#21487;&#20197;<i>&#31561;&#20215;</i>&#65292;&#20294;&#23427;&#20204;&#30340;&#36820;&#22238;&#31867;&#22411;&#21644;&#24418;&#21442;&#21015;&#34920;&#20013;&#19968;&#25110;&#22810;&#20010;&#28041;&#21450;&#27169;&#26495;&#24418;&#21442;&#30340;&#34920;&#36798;&#24335;<i>&#21151;&#33021;&#31561;&#20215;</i>&#65292;&#37027;&#20040;&#31216;&#23427;&#20204;<i>&#21151;&#33021;&#31561;&#20215;</i>&#12290;</p>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx20">
<td>
<p>&#21478;&#22806;&#65292;&#22914;&#26524;&#20026;&#20004;&#20010;&#20989;&#25968;&#27169;&#26495;&#25351;&#23450;&#30340;&#32422;&#26463;&#19981;&#21516;&#65292;&#20294;&#23427;&#20204;&#25509;&#21463;&#19988;&#34987;&#30456;&#21516;&#30340;&#27169;&#26495;&#23454;&#21442;&#21015;&#34920;&#30340;&#38598;&#21512;&#25152;&#28385;&#36275;&#65292;&#37027;&#20040;&#23427;&#20204;<i>&#21151;&#33021;&#31561;&#20215;</i>&#20294;&#19981;<i>&#31561;&#20215;</i>&#12290;</p>
</td>
<td><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></td>
</tr>
</table>
<p>&#22914;&#26524;&#31243;&#24207;&#21547;&#26377;<i>&#21151;&#33021;&#31561;&#20215;</i>&#20294;&#19981;<i>&#31561;&#20215;</i>&#30340;&#20989;&#25968;&#27169;&#26495;&#22768;&#26126;&#65292;&#37027;&#20040;&#31243;&#24207;&#38750;&#33391;&#26500;&#65307;&#19981;&#35201;&#27714;&#35786;&#26029;&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="co1">// &#31561;&#20215;</span>
<span class="kw1">template</span> <span class="sy1">&lt;</span><span class="kw4">int</span> I<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>A<span class="sy1">&lt;</span>I<span class="sy1">&gt;</span>, A<span class="sy1">&lt;</span>I<span class="sy2">+</span><span class="nu0">10</span><span class="sy1">&gt;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#37325;&#36733; #1</span>
<span class="kw1">template</span> <span class="sy1">&lt;</span><span class="kw4">int</span> I<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>A<span class="sy1">&lt;</span>I<span class="sy1">&gt;</span>, A<span class="sy1">&lt;</span>I<span class="sy2">+</span><span class="nu0">10</span><span class="sy1">&gt;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#37325;&#36733; #1 &#30340;&#20877;&#22768;&#26126;</span>
<span class="co1">// &#19981;&#31561;&#20215;</span>
<span class="kw1">template</span> <span class="sy1">&lt;</span><span class="kw4">int</span> I<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>A<span class="sy1">&lt;</span>I<span class="sy1">&gt;</span>, A<span class="sy1">&lt;</span>I<span class="sy2">+</span><span class="nu0">10</span><span class="sy1">&gt;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#37325;&#36733; #1</span>
<span class="kw1">template</span> <span class="sy1">&lt;</span><span class="kw4">int</span> I<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>A<span class="sy1">&lt;</span>I<span class="sy1">&gt;</span>, A<span class="sy1">&lt;</span>I<span class="sy2">+</span><span class="nu0">11</span><span class="sy1">&gt;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#37325;&#36733; #2</span>
<span class="co1">// &#21151;&#33021;&#31561;&#20215;&#20294;&#19981;&#31561;&#20215;</span>
<span class="co1">// &#31243;&#24207;&#38750;&#33391;&#26500;&#65292;&#19981;&#35201;&#27714;&#35786;&#26029;</span>
<span class="kw1">template</span> <span class="sy1">&lt;</span><span class="kw4">int</span> I<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>A<span class="sy1">&lt;</span>I<span class="sy1">&gt;</span>, A<span class="sy1">&lt;</span>I<span class="sy2">+</span><span class="nu0">10</span><span class="sy1">&gt;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#37325;&#36733; #1</span>
<span class="kw1">template</span> <span class="sy1">&lt;</span><span class="kw4">int</span> I<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>A<span class="sy1">&lt;</span>I<span class="sy1">&gt;</span>, A<span class="sy1">&lt;</span>I<span class="sy2">+</span><span class="nu0">1</span><span class="sy2">+</span><span class="nu0">2</span><span class="sy2">+</span><span class="nu0">3</span><span class="sy2">+</span><span class="nu0">4</span><span class="sy1">&gt;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#21151;&#33021;&#31561;&#20215;</span></pre></div>
</div>
<p>&#24403;&#21516;&#19968;&#20010;&#20989;&#25968;&#27169;&#26495;&#29305;&#21270;&#19982;&#22810;&#20110;&#19968;&#20010;&#37325;&#36733;&#30340;&#20989;&#25968;&#27169;&#26495;&#30456;&#21305;&#37197;&#26102;&#65288;&#36825;&#36890;&#24120;&#30001;<a href="cpp-language-template_argument_deduction.html">&#27169;&#26495;&#23454;&#21442;&#25512;&#23548;</a>&#25152;&#23548;&#33268;&#65289;&#65292;&#25191;&#34892;<i>&#37325;&#36733;&#20989;&#25968;&#27169;&#26495;&#30340;&#20559;&#24207;</i>&#22788;&#29702;&#20197;&#36873;&#25321;&#26368;&#20339;&#21305;&#37197;&#12290;</p>
<p>&#20855;&#20307;&#32780;&#35328;&#65292;&#22312;&#20197;&#19979;&#24773;&#24418;&#20013;&#21457;&#29983;&#20559;&#24207;&#22788;&#29702;&#65306;</p>
<div class="t-li1"><span class="t-li">1)</span> &#23545;&#20989;&#25968;&#27169;&#26495;&#29305;&#21270;&#30340;&#35843;&#29992;&#30340;<a href="cpp-language-overload_resolution.html">&#37325;&#36733;&#20915;&#35758;</a>&#65306;
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> X<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>X a<span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> X<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>X<span class="sy2">*</span> a<span class="br0">)</span><span class="sy4">;</span>
<span class="kw4">int</span><span class="sy2">*</span> p<span class="sy4">;</span>
f<span class="br0">(</span>p<span class="br0">)</span><span class="sy4">;</span></pre></div>
</div>
</div>
<div class="t-li1"><span class="t-li">2)</span> &#21462;<a href="cpp-language-overloaded_address.html">&#20989;&#25968;&#27169;&#26495;&#29305;&#21270;&#30340;&#22320;&#22336;</a>&#26102;&#65306;
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> X<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>X a<span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> X<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>X<span class="sy2">*</span> a<span class="br0">)</span><span class="sy4">;</span>
<span class="kw4">void</span> <span class="br0">(</span><span class="sy2">*</span>p<span class="br0">)</span><span class="br0">(</span><span class="kw4">int</span><span class="sy2">*</span><span class="br0">)</span> <span class="sy1">=</span> <span class="sy3">&amp;</span>f<span class="sy4">;</span></pre></div>
</div>
</div>
<div class="t-li1"><span class="t-li">3)</span> &#36873;&#25321;&#20316;&#20026;&#20989;&#25968;&#27169;&#26495;&#29305;&#21270;&#30340;<a href="cpp-memory-new-operator_delete.html">&#24067;&#32622; <code>operator delete</code></a> &#20197;&#21305;&#37197;&#24067;&#32622; <code>operator new</code> &#26102;&#65306;
<table class="metadata plainlinks ambox mbox-small-left ambox-notice" style="">
<tr>
<td class="mbox-empty-cell"></td>
<td class="mbox-text" style="">&#26412;&#33410;&#26410;&#23436;&#25104;<br />
&#21407;&#22240;&#65306;&#23567;&#31034;&#20363;</td>
</tr>
</table>
</div>
<div class="t-li1"><span class="t-li">4)</span> &#24403;<a href="cpp-language-friend.html#.E6.A8.A1.E6.9D.BF.E5.8F.8B.E5.85.83">&#21451;&#20803;&#20989;&#25968;&#22768;&#26126;</a>&#12289;<a href="cpp-language-function_template.html#.E6.98.BE.E5.BC.8F.E5.AE.9E.E4.BE.8B.E5.8C.96">&#26174;&#24335;&#23454;&#20363;&#21270;</a>&#25110;<a href="cpp-language-template_specialization.html">&#26174;&#24335;&#29305;&#21270;</a>&#25351;&#20195;&#20989;&#25968;&#27169;&#26495;&#29305;&#21270;&#26102;&#65306;
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> X<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>X a<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#31532;&#19968;&#20010;&#27169;&#26495; f</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> X<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>X<span class="sy2">*</span> a<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#31532;&#20108;&#20010;&#27169;&#26495; f</span>
<span class="kw1">template</span><span class="sy1">&lt;&gt;</span> <span class="kw4">void</span> f<span class="sy1">&lt;&gt;</span><span class="br0">(</span><span class="kw4">int</span> <span class="sy2">*</span>a<span class="br0">)</span> <span class="br0">{</span><span class="br0">}</span> <span class="co1">// &#26174;&#24335;&#29305;&#21270;</span>
<span class="co1">// &#27169;&#26495;&#23454;&#21442;&#25512;&#23548;&#20986;&#29616;&#20004;&#20010;&#20505;&#36873;&#65306;</span>
<span class="co1">// f&lt;int*&gt;(int*) &#19982; f&lt;int&gt;(int*)</span>
<span class="co1">// &#20559;&#24207;&#36873;&#25321; f&lt;int&gt;(int*)&#65292;&#22240;&#20026;&#23427;&#26356;&#29305;&#27530;</span></pre></div>
</div>
</div>
<p>&#38750;&#27491;&#24335;&#32780;&#35328;&#65292;&ldquo;A &#27604; B &#26356;&#29305;&#27530;&rdquo;&#24847;&#21619;&#30528;&ldquo;A &#27604; B &#25509;&#21463;&#26356;&#23569;&#30340;&#31867;&#22411;&rdquo;&#12290;</p>
<p>&#27491;&#24335;&#32780;&#35328;&#65292;&#20026;&#30830;&#23450;&#20219;&#24847;&#20004;&#20010;&#20989;&#25968;&#27169;&#26495;&#20013;&#21738;&#20010;&#26356;&#29305;&#27530;&#65292;&#20559;&#24207;&#22788;&#29702;&#39318;&#20808;&#23545;&#20004;&#20010;&#27169;&#26495;&#20043;&#19968;&#36827;&#34892;&#20197;&#19979;&#21464;&#25442;&#65306;</p>
<ul>
<li>&#23545;&#20110;&#27599;&#20010;&#31867;&#22411;&#12289;&#38750;&#31867;&#22411;&#21450;&#27169;&#26495;&#24418;&#21442;&#65292;&#21253;&#25324;&#24418;&#21442;&#21253;&#65292;&#29983;&#25104;&#19968;&#20010;&#21807;&#19968;&#30340;&#34394;&#26500;&#31867;&#22411;&#12289;&#20540;&#25110;&#27169;&#26495;&#65292;&#24182;&#23558;&#20854;&#26367;&#25442;&#21040;&#27169;&#26495;&#30340;&#20989;&#25968;&#31867;&#22411;&#20013;</li>
<li>&#22914;&#26524;&#35201;&#27604;&#36739;&#30340;&#20004;&#20010;&#20989;&#25968;&#27169;&#26495;&#20013;&#21482;&#26377;&#19968;&#20010;&#26159;&#25104;&#21592;&#20989;&#25968;&#65292;&#19988;&#35813;&#20989;&#25968;&#27169;&#26495;&#26159;&#26576;&#20010;&#31867; <code>A</code> &#30340;&#38750;&#38745;&#24577;&#25104;&#21592;&#65292;&#37027;&#20040;&#21521;&#23427;&#30340;&#24418;&#21442;&#21015;&#34920;&#30340;&#24320;&#22836;&#25554;&#20837;&#19968;&#20010;&#26032;&#30340;&#24418;&#21442;&#65292;&#24403;&#25104;&#21592;&#20989;&#25968;&#27169;&#26495;&#26377; &amp;&amp; &#38480;&#23450;&#26102;&#65292;&#23427;&#30340;&#31867;&#22411;&#26159; <code>cv A&amp;&amp;</code>&#65292;&#21542;&#21017;&#26159; <code>cv A&amp;</code>&#65288;&#20854;&#20013; <code>cv</code> &#26159;&#25104;&#21592;&#20989;&#25968;&#27169;&#26495;&#30340; cv &#38480;&#23450;&#65289;&mdash;&mdash;&#36825;&#26377;&#21161;&#20110;&#23545;&#36816;&#31639;&#31526;&#30340;&#23450;&#24207;&#65292;&#23427;&#20204;&#26159;&#21516;&#26102;&#20316;&#20026;&#25104;&#21592;&#21644;&#38750;&#25104;&#21592;&#20989;&#25968;&#26597;&#25214;&#30340;&#65306;</li>
</ul>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">struct</span> A <span class="br0">{</span><span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw1">struct</span> B <span class="br0">{</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> R<span class="sy1">&gt;</span> <span class="kw4">int</span> operator<span class="sy2">*</span><span class="br0">(</span>R<span class="sy3">&amp;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #1</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T, <span class="kw1">class</span> R<span class="sy1">&gt;</span> <span class="kw4">int</span> operator<span class="sy2">*</span><span class="br0">(</span>T<span class="sy3">&amp;</span>, R<span class="sy3">&amp;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #2</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
A a<span class="sy4">;</span>
B<span class="sy1">&lt;</span>A<span class="sy1">&gt;</span> b<span class="sy4">;</span>
b <span class="sy2">*</span> a<span class="sy4">;</span> <span class="co1">// &#27169;&#26495;&#23454;&#21442;&#25512;&#23548;&#23545;&#20110; int B&lt;A&gt;::operator*(R&amp;) &#32473;&#20986; R=A </span>
<span class="co1">// &#23545;&#20110; int operator*(T&amp;, R&amp;)&#65292;T=B&lt;A&gt;&#65292;R=A</span>
<span class="co1">// &#20026;&#36827;&#34892;&#20559;&#24207;&#22788;&#29702;&#65292;&#23558;&#25104;&#21592; template B&lt;A&gt;::operator*</span>
<span class="co1">// &#21464;&#25442;&#25104; template&lt;class R&gt; int operator*(B&lt;A&gt;&amp;, R&amp;);</span>
<span class="co1">// int operator*( T&amp;, R&amp;) T=B&lt;A&gt;, R=A</span>
<span class="co1">// &#19982; int operator*(B&lt;A&gt;&amp;, R&amp;) R=A &#38388;&#30340;&#20559;&#24207;</span>
<span class="co1">// &#36873;&#25321; int operator*(B&lt;A&gt;&amp;, A&amp;) &#20026;&#26356;&#29305;&#27530;&#32773;</span></pre></div>
</div>
<p>&#22312;&#25353;&#19978;&#26041;&#25551;&#36848;&#21464;&#25442;&#20004;&#20010;&#27169;&#26495;&#20043;&#19968;&#21518;&#65292;&#20197;&#21464;&#25442;&#21518;&#30340;&#27169;&#26495;&#20026;&#23454;&#21442;&#27169;&#26495;&#65292;&#20197;&#21478;&#19968;&#27169;&#26495;&#30340;&#21407;&#27169;&#26495;&#31867;&#22411;&#20026;&#24418;&#21442;&#27169;&#26495;&#65292;&#25191;&#34892;<a href="cpp-language-template_argument_deduction.html">&#27169;&#26495;&#23454;&#21442;&#25512;&#23548;</a>&#12290;&#28982;&#21518;&#20197;&#31532;&#20108;&#20010;&#27169;&#26495;&#65288;&#36827;&#34892;&#21464;&#25442;&#21518;&#65289;&#20026;&#23454;&#21442;&#65292;&#20197;&#31532;&#19968;&#20010;&#27169;&#26495;&#30340;&#21407;&#22987;&#24418;&#24335;&#20026;&#24418;&#21442;&#37325;&#22797;&#36825;&#19968;&#36807;&#31243;&#12290;</p>
<p>&#29992;&#20110;&#30830;&#23450;&#39034;&#24207;&#30340;&#31867;&#22411;&#21462;&#20915;&#20110;&#35821;&#22659;&#65306;</p>
<ul>
<li>&#22312;&#20989;&#25968;&#35843;&#29992;&#30340;&#35821;&#22659;&#20013;&#65292;&#36825;&#20123;&#31867;&#22411;&#26159;&#22312;&#36825;&#20010;&#20989;&#25968;&#35843;&#29992;&#20013;&#20855;&#26377;&#23454;&#21442;&#30340;&#20989;&#25968;&#24418;&#21442;&#30340;&#31867;&#22411;&#65288;&#19981;&#32771;&#34385;&#40664;&#35748;&#20989;&#25968;&#23454;&#21442;&#12289;&#24418;&#21442;&#21253;&#21644;&#30465;&#30053;&#21495;&#24418;&#21442;&mdash;&mdash;&#35265;&#19979;&#25991;&#65289;</li>
<li>&#22312;&#35843;&#29992;&#29992;&#25143;&#23450;&#20041;&#30340;&#36716;&#25442;&#20989;&#25968;&#30340;&#35821;&#22659;&#20013;&#65292;&#20351;&#29992;&#36716;&#25442;&#20989;&#25968;&#27169;&#26495;&#30340;&#36820;&#22238;&#31867;&#22411;</li>
<li>&#22312;&#20854;&#20182;&#35821;&#22659;&#20013;&#65292;&#20351;&#29992;&#20989;&#25968;&#27169;&#26495;&#31867;&#22411;</li>
</ul>
<p>&#24418;&#21442;&#27169;&#26495;&#20013;&#30340;&#27599;&#20010;&#20197;&#19978;&#21015;&#20986;&#30340;&#31867;&#22411;&#37117;&#20250;&#34987;&#25512;&#23548;&#12290;&#25512;&#23548;&#24320;&#22987;&#21069;&#65292;&#20197;&#19979;&#21015;&#26041;&#24335;&#23545;&#24418;&#21442;&#27169;&#26495;&#30340;&#27599;&#20010;&#24418;&#21442; <code><b>P</b></code> &#21644;&#23454;&#21442;&#27169;&#26495;&#30340;&#23545;&#24212;&#23454;&#21442; <code><b>A</b></code> &#36827;&#34892;&#35843;&#25972;&#65306;</p>
<ul>
<li>&#22914;&#26524; <code><b>P</b></code> &#19982; <code><b>A</b></code> &#27492;&#21069;&#37117;&#26159;&#24341;&#29992;&#31867;&#22411;&#65292;&#37027;&#20040;&#30830;&#23450;&#21738;&#20010;&#26377;&#26356;&#22810;&#30340; cv &#38480;&#23450;&#65288;&#20854;&#20182;&#25152;&#26377;&#24773;&#20917;&#19979;&#65292;&#23601;&#20559;&#24207;&#30446;&#30340;&#32780;&#35328;&#37117;&#24573;&#30053; cv &#38480;&#23450;&#65289;</li>
<li>&#22914;&#26524; <code><b>P</b></code> &#26159;&#24341;&#29992;&#31867;&#22411;&#65292;&#37027;&#20040;&#20197;&#23427;&#25152;&#24341;&#29992;&#30340;&#31867;&#22411;&#26367;&#25442;&#23427;</li>
<li>&#22914;&#26524; <code><b>A</b></code> &#26159;&#24341;&#29992;&#31867;&#22411;&#65292;&#37027;&#20040;&#20197;&#23427;&#25152;&#24341;&#29992;&#30340;&#31867;&#22411;&#26367;&#25442;&#23427;</li>
<li>&#22914;&#26524; <code><b>P</b></code> &#26377; cv &#38480;&#23450;&#65292;&#37027;&#20040; <code><b>P</b></code> &#34987;&#26367;&#25442;&#20026;&#33258;&#36523;&#30340;&#26080; cv &#38480;&#23450;&#29256;&#26412;</li>
<li>&#22914;&#26524; <code><b>A</b></code> &#26377; cv &#38480;&#23450;&#65292;&#37027;&#20040; <code><b>A</b></code> &#34987;&#26367;&#25442;&#20026;&#33258;&#36523;&#30340;&#26080; cv &#38480;&#23450;&#29256;&#26412;</li>
</ul>
<p>&#22312;&#36825;&#20123;&#35843;&#25972;&#21518;&#65292;&#36981;&#24490;<a href="cpp-language-template_argument_deduction.html#.E4.BB.8E.E7.B1.BB.E5.9E.8B.E6.8E.A8.E5.AF.BC">&#20174;&#31867;&#22411;&#36827;&#34892;&#27169;&#26495;&#23454;&#21442;&#25512;&#23548;&#35268;&#21017;</a>&#65292;&#20174; <code><b>A</b></code> &#25512;&#23548; <code><b>P</b></code> &#12290;</p>
<p>&#22914;&#26524; <code><b>P</b></code> &#26159;&#20989;&#25968;&#24418;&#21442;&#21253;&#65292;&#37027;&#20040;&#23454;&#21442;&#27169;&#26495;&#30340;&#27599;&#20010;&#21097;&#20313;&#24418;&#21442;&#31867;&#22411;&#30340;&#31867;&#22411; <code><b>A</b></code> &#37117;&#19982;&#35813;&#20989;&#25968;&#21442;&#25968;&#21253;&#30340;&#22768;&#26126;&#31526;&#26631;&#35782;&#30340;&#31867;&#22411; <code><b>P</b></code> &#36827;&#34892;&#27604;&#36739;&#12290;&#27599;&#27425;&#27604;&#36739;&#37117;&#20026;&#35813;&#20989;&#25968;&#21442;&#25968;&#21253;&#25152;&#23637;&#24320;&#30340;&#27169;&#26495;&#21442;&#25968;&#21253;&#20013;&#30340;&#21518;&#32487;&#20301;&#32622;&#30340;&#36827;&#34892;&#27169;&#26495;&#23454;&#21442;&#30340;&#25512;&#23548;&#12290;</p>
<p>&#22914;&#26524; <code><b>A</b></code> &#20174;&#20989;&#25968;&#21442;&#25968;&#21253;&#21464;&#25442;&#32780;&#26469;&#65292;&#37027;&#20040;&#23558;&#23427;&#19982;&#24418;&#21442;&#27169;&#26495;&#30340;&#27599;&#20010;&#21097;&#20313;&#24418;&#21442;&#31867;&#22411;&#36827;&#34892;&#27604;&#36739;&#12290;</p>
<p>&#22914;&#26524;&#21464;&#25442;&#21518;&#30340;&#27169;&#26495; 1 &#30340;&#23454;&#21442; <code><b>A</b></code> &#21487;&#20197;&#29992;&#26469;&#25512;&#23548;&#27169;&#26495; 2 &#30340;&#23545;&#24212;&#24418;&#21442; <code><b>P</b></code>&#65292;&#20294;&#21453;&#20043;&#19981;&#21487;&#65292;&#37027;&#20040;&#23545;&#20110;&#20174;&#36825;&#19968;&#23545; <code><b>P/A</b></code> &#25152;&#25512;&#23548;&#30340;&#31867;&#22411;&#32780;&#35328;&#65292;&#36825;&#20010; <code><b>A</b></code> &#27604; <code><b>P</b></code> &#26356;&#29305;&#27530;&#12290;</p>
<p>&#22914;&#26524;&#21452;&#21521;&#25512;&#23548;&#22343;&#25104;&#21151;&#65292;&#19988;&#21407; <code><b>P</b></code> &#19982; <code><b>A</b></code> &#37117;&#26159;&#24341;&#29992;&#31867;&#22411;&#65292;&#37027;&#20040;&#20570;&#38468;&#21152;&#30340;&#27979;&#35797;&#65306;</p>
<ul>
<li>&#22914;&#26524; <code><b>A</b></code> &#26159;&#24038;&#20540;&#24341;&#29992;&#32780; <code><b>P</b></code> &#26159;&#21491;&#20540;&#24341;&#29992;&#65292;&#37027;&#20040;&#35748;&#20026; <code><b>A</b></code> &#27604; <code><b>P</b></code> &#26356;&#29305;&#27530;</li>
<li>&#22914;&#26524; <code><b>A</b></code> &#27604; <code><b>P</b></code> &#26377;&#26356;&#22810;&#30340; cv &#38480;&#23450;&#65292;&#37027;&#20040;&#35748;&#20026; <code><b>A</b></code> &#27604; <code><b>P</b></code> &#26356;&#29305;&#27530;</li>
</ul>
<p>&#25152;&#26377;&#20854;&#20182;&#24773;&#20917;&#19979;&#65292;&#23545;&#20110;&#36825;&#19968;&#23545; <code><b>P/A</b></code> &#25152;&#25512;&#23548;&#30340;&#31867;&#22411;&#32780;&#35328;&#65292;&#27809;&#26377;&#27169;&#26495;&#27604;&#21478;&#19968;&#20010;&#26356;&#29305;&#27530;&#12290;</p>
<p>&#22312;&#20197;&#20004;&#20010;&#26041;&#21521;&#32771;&#34385;&#27599;&#20010; <code><b>P</b></code> &#19982; <code><b>A</b></code> &#21518;&#65292;&#22914;&#26524;&#23545;&#20110;&#25152;&#32771;&#34385;&#30340;&#27599;&#20010;&#31867;&#22411;&#65292;</p>
<ul>
<li>&#27169;&#26495; 1 &#23545;&#25152;&#26377;&#31867;&#22411;&#33267;&#23569;&#19982;&#27169;&#26495; 2 &#19968;&#26679;&#29305;&#27530;</li>
<li>&#27169;&#26495; 1 &#23545;&#26576;&#20123;&#31867;&#22411;&#27604;&#27169;&#26495; 2 &#29305;&#27530;</li>
<li>&#27169;&#26495; 2 &#23545;&#20219;&#20309;&#31867;&#22411;&#37117;&#19981;&#27604;&#27169;&#26495; 1 &#26356;&#29305;&#27530;&#65292;&#25110;&#24182;&#38750;&#23545;&#20219;&#20309;&#31867;&#22411;&#37117;&#33267;&#23569;&#19968;&#26679;&#29305;&#27530;</li>
</ul>
<p>&#37027;&#20040;&#27169;&#26495; 1 &#27604;&#27169;&#26495; 2 &#26356;&#29305;&#27530;&#12290;&#22914;&#26524;&#19978;&#36848;&#26465;&#20214;&#22312;&#20999;&#25442;&#27169;&#26495;&#39034;&#24207;&#21518;&#20026;&#30495;&#65292;&#37027;&#20040;&#27169;&#26495; 2 &#27604;&#27169;&#26495; 1 &#26356;&#29305;&#27530;&#12290;&#21542;&#21017;&#65292;&#27809;&#26377;&#27169;&#26495;&#27604;&#21478;&#19968;&#20010;&#26356;&#29305;&#27530;&#12290; &#25345;&#24179;&#30340;&#24773;&#20917;&#19979;&#65292;&#22914;&#26524;&#19968;&#20010;&#20989;&#25968;&#27169;&#26495;&#26377;&#19968;&#20010;&#23614;&#37096;&#30340;&#24418;&#21442;&#21253;&#32780;&#21478;&#19968;&#20010;&#27809;&#26377;&#65292;&#37027;&#20040;&#35748;&#20026;&#24102;&#26377;&#34987;&#24573;&#30053;&#30340;&#24418;&#21442;&#32773;&#27604;&#26377;&#31354;&#24418;&#21442;&#21253;&#32773;&#26356;&#29305;&#27530;&#12290;</p>
<p>&#22914;&#26524;&#22312;&#32771;&#34385;&#25152;&#26377;&#30340;&#37325;&#36733;&#27169;&#26495;&#23545;&#20043;&#21518;&#65292;&#26377;&#19968;&#20010;&#26080;&#27495;&#20041;&#22320;&#27604;&#25152;&#26377;&#20854;&#20182;&#30340;&#37117;&#26356;&#29305;&#27530;&#65292;&#37027;&#20040;&#36873;&#25321;&#36825;&#20010;&#27169;&#26495;&#30340;&#29305;&#21270;&#65292;&#21542;&#21017;&#32534;&#35793;&#22833;&#36133;&#12290;</p>
<p>&#22312;&#19979;&#21015;&#31034;&#20363;&#20013;&#65292;&#34394;&#26500;&#23454;&#21442;&#34987;&#31216;&#20026; U1, U2&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>T<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#27169;&#26495; #1</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>T<span class="sy2">*</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#27169;&#26495; #2</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span><span class="kw4">const</span> T<span class="sy2">*</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#27169;&#26495; #3</span>
<span class="kw4">void</span> m<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw4">const</span> <span class="kw4">int</span><span class="sy2">*</span> p<span class="sy4">;</span>
f<span class="br0">(</span>p<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#37325;&#36733;&#20915;&#35758;&#36873;&#21462;&#65306;#1&#65306;void f(T) [T = const int *]</span>
<span class="co1">// &#12288; #2&#65306;void f(T*) [T = const int]</span>
<span class="co1">// &#12288; #3&#65306;void f(const T *) [T = int]</span>
<span class="co1">// &#20559;&#24207;&#22788;&#29702;</span>
<span class="co1">// &#20174;&#21464;&#25442;&#21518;&#30340; #2 &#21040; #1&#65306;&#20174; void(U1*) &#21040; void(T) &#65306;P=T A=U1*&#65306;&#25512;&#23548;&#25104;&#21151;&#65306;T=U1*</span>
<span class="co1">// &#20174;&#21464;&#25442;&#21518;&#30340; #1 &#21040; #2&#65306;&#20174; void(U1) &#21040; void(T*)&#65306;P=T* A=U1 &#65306;&#25512;&#23548;&#22833;&#36133;</span>
<span class="co1">// &#23545;&#20110; T &#32780;&#35328; #2 &#27604; #1 &#26356;&#29305;&#27530;</span>
<span class="co1">// &#20174;&#21464;&#25442;&#21518;&#30340; #3 &#21040; #1&#65306;&#20174; void(const U1*) &#21040; void(T)&#65306;P=T, A=const U1*&#65306;&#25104;&#21151;</span>
<span class="co1">// &#20174;&#21464;&#25442;&#21518;&#30340; #1 &#21040; #3&#65306;&#20174; void(U1) &#21040; void(const T*)&#65306;P=const T*, A=U1&#65306;&#22833;&#36133;</span>
<span class="co1">// &#23545;&#20110; T &#32780;&#35328; #3 &#27604; #1 &#26356;&#29305;&#27530;</span>
<span class="co1">// &#20174;&#21464;&#25442;&#21518;&#30340; #3 &#21040; #2&#65306;&#20174; void(const U1*) &#21040; void(T*)&#65306;P=T* A=const U1*&#65306;&#25104;&#21151;</span>
<span class="co1">// &#20174;&#21464;&#25442;&#21518;&#30340; #2 &#21040; #3&#65306;&#20174; void(U1*) &#21040; void(const T*)&#65306;P=const T* A=U1*&#65306;&#22833;&#36133;</span>
<span class="co1">// &#23545;&#20110; T &#32780;&#35328; #3 &#27604; #2 &#26356;&#29305;&#27530;</span>
<span class="co1">// &#32467;&#26524;&#65306;#3 &#34987;&#36873;&#25321;</span>
<span class="co1">// &#25442;&#35328;&#20043;&#65292;f(const T*) &#27604; f(T) &#25110; f(T*) &#26356;&#29305;&#27530;</span>
<span class="br0">}</span></pre></div>
</div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>T, T<span class="sy2">*</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #1</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>T, <span class="kw4">int</span><span class="sy2">*</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #2</span>
<span class="kw4">void</span> m<span class="br0">(</span><span class="kw4">int</span><span class="sy2">*</span> p<span class="br0">)</span> <span class="br0">{</span>
f<span class="br0">(</span><span class="nu0">0</span>, p<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #1 &#30340;&#25512;&#23548;&#65306;void f(T, T*) [T = int]</span>
<span class="co1">// #2 &#30340;&#25512;&#23548;&#65306;void f(T, int*) [T = int]</span>
<span class="co1">// &#20559;&#24207;&#65306;</span>
<span class="co1">// &#20174; #2 &#21040; #1&#65306;&#20174; void(U1,int*) &#21040; void(T,T*)&#65306;</span>
<span class="co1">// P1=T A1=U1 &#65306;T=U1</span>
<span class="co1">// P2=T* A2=int*&#65306;T=int&#65306;&#22833;&#36133;</span>
<span class="co1">// &#20174; #1 &#21040; #2&#65306;&#20174; void(U1, U2*) &#21040; void(T,int*)&#65306;</span>
<span class="co1">// P1=T A1=U1 &#65306;T=U1</span>
<span class="co1">// P2=int* A2=U2* &#65306;&#22833;&#36133;</span>
<span class="co1">// &#23545;&#20110; T &#32780;&#35328;&#27809;&#26377;&#26356;&#29305;&#27530;&#30340;&#19968;&#26041;&#65292;&#35843;&#29992;&#26377;&#27495;&#20041;</span>
<span class="br0">}</span></pre></div>
</div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> g<span class="br0">(</span>T<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#27169;&#26495; #1</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> g<span class="br0">(</span>T<span class="sy3">&amp;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#27169;&#26495; #2</span>
<span class="kw4">void</span> m<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw4">float</span> x<span class="sy4">;</span>
g<span class="br0">(</span>x<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#20174; #1 &#25512;&#23548;&#65306;void g(T) [T = float]</span>
<span class="co1">// &#20174; #2 &#25512;&#23548;&#65306;void g(T&amp;) [T = float]</span>
<span class="co1">// &#20559;&#24207;&#65306;</span>
<span class="co1">// &#20174; #2 &#21040; #1&#65306;&#20174; void(U1&amp;) &#21040; void(T)&#65306;</span>
<span class="co1">// P=T A=U1&#65288;&#35843;&#25972;&#21518;&#65289;&#65306;&#25104;&#21151;</span>
<span class="co1">// &#20174; #1 &#21040; #2&#65306;&#20174; void(U1) &#21040; void(T&amp;)&#65306;</span>
<span class="co1">// P=T&#65288;&#35843;&#25972;&#21518;&#65289; A=U1 &#65306;&#25104;&#21151;</span>
<span class="co1">// &#23545;&#20110; T &#32780;&#35328;&#27809;&#26377;&#26356;&#29305;&#27530;&#30340;&#19968;&#26041;&#65292;&#35843;&#29992;&#26377;&#27495;&#20041;</span>
<span class="br0">}</span></pre></div>
</div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw1">struct</span> A <span class="br0">{</span> A<span class="br0">(</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">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> h<span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&amp;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #1</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> h<span class="br0">(</span>A<span class="sy1">&lt;</span>T<span class="sy1">&gt;</span><span class="sy3">&amp;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #2</span>
<span class="kw4">void</span> m<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
A<span class="sy1">&lt;</span><span class="kw4">int</span><span class="sy1">&gt;</span> z<span class="sy4">;</span>
h<span class="br0">(</span>z<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#20174; #1 &#25512;&#23548;&#65306;void h(const T&amp;) [T = A&lt;int&gt;]</span>
<span class="co1">// &#20174; #2 &#25512;&#23548;&#65306;void h(A&lt;T&gt;&amp;) [T = int]</span>
<span class="co1">// &#20559;&#24207;&#65306;</span>
<span class="co1">// &#20174; #2 &#21040; #1&#65306;&#20174; void(A&lt;U1&gt;&amp;) &#21040; void(const T&amp;)&#65306;</span>
<span class="co1">// P=T A=A&lt;U1&gt; &#65306;&#25104;&#21151; T=A&lt;U1&gt;</span>
<span class="co1">// &#20174; #1 &#21040; #2&#65306;&#20174; void(const U1&amp;) &#21040; void(A&lt;T&gt;&amp;)&#65306;</span>
<span class="co1">// P=A&lt;T&gt; A=const U1&#65306;&#22833;&#36133;</span>
<span class="co1">// &#23545;&#20110; T &#32780;&#35328; #2 &#27604; #1 &#26356;&#29305;&#27530;</span>
<span class="kw4">const</span> A<span class="sy1">&lt;</span><span class="kw4">int</span><span class="sy1">&gt;</span> z2<span class="sy4">;</span>
h<span class="br0">(</span>z2<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#20174; #1 &#25512;&#23548;&#65306;void h(const T&amp;) [T = A&lt;int&gt;]</span>
<span class="co1">// &#20174; #2 &#25512;&#23548;&#65306;void h(A&lt;T&gt;&amp;) [T = int]&#65292;&#20294;&#26367;&#25442;&#22833;&#36133;</span>
<span class="co1">// &#21482;&#26377;&#19968;&#20010;&#21487;&#36873;&#25321;&#30340;&#37325;&#36733;&#65292;&#19981;&#23581;&#35797;&#20559;&#24207;&#22788;&#29702;&#65292;&#35843;&#29992; #1</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#22240;&#20026;&#22312;&#35843;&#29992;&#35821;&#22659;&#20013;&#21482;&#32771;&#34385;&#26377;&#26126;&#30830;&#30340;&#35843;&#29992;&#23454;&#21442;&#30340;&#24418;&#21442;&#65292;&#25152;&#20197;&#27809;&#26377;&#26126;&#30830;&#30340;&#35843;&#29992;&#23454;&#21442;&#30340;&#24418;&#21442;&#65292;&#21253;&#25324;&#20989;&#25968;&#24418;&#21442;&#21253;&#12289;&#30465;&#30053;&#21495;&#24418;&#21442;&#21450;&#26377;&#40664;&#35748;&#23454;&#21442;&#30340;&#24418;&#21442;&#22343;&#34987;&#24573;&#30053;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>T<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #1</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>T<span class="sy2">*</span>, <span class="kw4">int</span><span class="sy1">=</span><span class="nu0">1</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #2</span>
<span class="kw4">void</span> m<span class="br0">(</span><span class="kw4">int</span><span class="sy2">*</span> ip<span class="br0">)</span> <span class="br0">{</span>
<span class="kw4">int</span><span class="sy2">*</span> ip<span class="sy4">;</span>
f<span class="br0">(</span>ip<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992; #2&#65288;T* &#27604; T &#26356;&#29305;&#27530;&#65289;</span>
<span class="br0">}</span></pre></div>
</div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> g<span class="br0">(</span>T<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #1</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> g<span class="br0">(</span>T<span class="sy2">*</span>, ...<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #2</span>
<span class="kw4">void</span> m<span class="br0">(</span><span class="kw4">int</span><span class="sy2">*</span> ip<span class="br0">)</span> <span class="br0">{</span>
g<span class="br0">(</span>ip<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992; #2&#65288;T* &#27604; T &#26356;&#29305;&#27530;&#65289;</span>
<span class="br0">}</span></pre></div>
</div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">&gt;</span> <span class="kw1">struct</span> A <span class="br0">{</span> <span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>U, A<span class="sy1">&lt;</span>U,T<span class="sy1">&gt;</span><span class="sy2">*</span> p <span class="sy1">=</span> <span class="nu0">0</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #1</span>
<span class="kw1">template</span><span class="sy1">&lt;</span> <span class="kw1">class</span> U<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>U, A<span class="sy1">&lt;</span>U,U<span class="sy1">&gt;</span><span class="sy2">*</span> p <span class="sy1">=</span> <span class="nu0">0</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #2</span>
<span class="kw4">void</span> h<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
f<span class="sy1">&lt;</span><span class="kw4">int</span><span class="sy1">&gt;</span><span class="br0">(</span><span class="nu0">42</span>, <span class="br0">(</span>A<span class="sy1">&lt;</span><span class="kw4">int</span>, <span class="kw4">int</span><span class="sy1">&gt;</span><span class="sy2">*</span><span class="br0">)</span><span class="nu0">0</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992; #2</span>
f<span class="sy1">&lt;</span><span class="kw4">int</span><span class="sy1">&gt;</span><span class="br0">(</span><span class="nu0">42</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#38169;&#35823;&#65306;&#27495;&#20041;</span>
<span class="br0">}</span></pre></div>
</div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T <span class="sy1">&gt;</span> <span class="kw4">void</span> g<span class="br0">(</span>T, T <span class="sy1">=</span> T<span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #1</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T, <span class="kw1">class</span>... <span class="me1">U</span><span class="sy1">&gt;</span> <span class="kw4">void</span> g<span class="br0">(</span>T, U...<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #2</span>
<span class="kw4">void</span> h<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
g<span class="br0">(</span><span class="nu0">42</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#38169;&#35823;&#65306;&#27495;&#20041;</span>
<span class="br0">}</span></pre></div>
</div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T, <span class="kw1">class</span>... <span class="me1">U</span><span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>T, U...<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #1</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T <span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>T<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #2</span>
<span class="kw4">void</span> h<span class="br0">(</span><span class="kw4">int</span> i<span class="br0">)</span> <span class="br0">{</span>
f<span class="br0">(</span><span class="sy3">&amp;</span>i<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#22240;&#20026;&#24418;&#21442;&#21253;&#19982;&#26080;&#24418;&#21442;&#20043;&#38388;&#30340;&#20915;&#32988;&#35268;&#21017;&#35843;&#29992; #2</span>
<span class="co1">// &#65288;&#27880;&#24847;&#65306;&#22312; DR692 &#19982; DR1395 &#20043;&#38388;&#26102;&#26377;&#27495;&#20041;&#65289;</span>
<span class="br0">}</span></pre></div>
</div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T, <span class="kw1">class</span>... <span class="me1">U</span><span class="sy1">&gt;</span> <span class="kw4">void</span> g<span class="br0">(</span>T<span class="sy2">*</span>, U...<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #1</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T <span class="sy1">&gt;</span> <span class="kw4">void</span> g<span class="br0">(</span>T<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #2</span>
<span class="kw4">void</span> h<span class="br0">(</span><span class="kw4">int</span> i<span class="br0">)</span> <span class="br0">{</span>
g<span class="br0">(</span><span class="sy3">&amp;</span>i<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// OK&#65306;&#35843;&#29992; #1&#65288;T* &#27604; T &#26356;&#29305;&#27530;&#65289;</span>
<span class="br0">}</span></pre></div>
</div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span> <span class="sy1">&lt;</span><span class="kw1">class</span> ...<span class="me1">T</span><span class="sy1">&gt;</span> <span class="kw4">int</span> f<span class="br0">(</span>T<span class="sy2">*</span>...<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #1</span>
<span class="kw1">template</span> <span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">int</span> f<span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&amp;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #2</span>
f<span class="br0">(</span><span class="br0">(</span><span class="kw4">int</span><span class="sy2">*</span><span class="br0">)</span><span class="nu0">0</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// OK&#65306;&#36873;&#25321; #2&#65307;&#38750;&#21464;&#21442;&#27169;&#26495;&#27604;&#21464;&#21442;&#27169;&#26495;&#26356;&#29305;&#27530;</span>
<span class="co1">// &#65288;DR1395 &#20043;&#21069;&#26377;&#27495;&#20041;&#65292;&#22240;&#20026;&#20004;&#20010;&#26041;&#21521;&#30340;&#25512;&#23548;&#22343;&#22833;&#36133;&#65289;</span></pre></div>
</div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span>... <span class="me1">Args</span><span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>Args... <span class="me1">args</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #1</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T1, <span class="kw1">class</span>... <span class="me1">Args</span><span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>T1 a1, Args... <span class="me1">args</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #2</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T1, <span class="kw1">class</span> T2<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>T1 a1, T2 a2<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #3</span>
f<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992; #1</span>
f<span class="br0">(</span><span class="nu0">1</span>, <span class="nu0">2</span>, <span class="nu0">3</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992; #2</span>
f<span class="br0">(</span><span class="nu0">1</span>, <span class="nu0">2</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992; #3&#65307;&#38750;&#21464;&#21442;&#27169;&#26495; #3 &#27604;&#21464;&#21442;&#27169;&#26495; #1 &#19982; #2 &#26356;&#29305;&#27530;</span></pre></div>
</div>
<p>&#22312;&#20559;&#24207;&#22788;&#29702;&#20869;&#30340;&#27169;&#26495;&#23454;&#21442;&#25512;&#23548;&#26399;&#38388;&#65292;&#22914;&#26524;&#26377;&#23454;&#21442;&#19981;&#22312;&#20219;&#20309;&#34987;&#20559;&#24207;&#32771;&#34385;&#30340;&#31867;&#22411;&#20013;&#65292;&#37027;&#20040;&#19981;&#35201;&#27714;&#35813;&#23454;&#21442;&#19982;&#27169;&#26495;&#24418;&#21442;&#30456;&#21305;&#37197;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span> <span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> T f<span class="br0">(</span><span class="kw4">int</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #1</span>
<span class="kw1">template</span> <span class="sy1">&lt;</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">&gt;</span> T f<span class="br0">(</span>U<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #2</span>
<span class="kw4">void</span> g<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
f<span class="sy1">&lt;</span><span class="kw4">int</span><span class="sy1">&gt;</span><span class="br0">(</span><span class="nu0">1</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #1 &#30340;&#29305;&#21270;&#20026;&#26174;&#24335;&#65306;T f(int) [T = int]</span>
<span class="co1">// #2 &#30340;&#29305;&#21270;&#20026;&#25512;&#23548;&#65306;T f(U) [T = int, U = int]</span>
<span class="co1">// &#20559;&#24207;&#65288;&#21482;&#32771;&#34385;&#23454;&#21442;&#31867;&#22411;&#65289;&#65306;</span>
<span class="co1">// &#20174; #2 &#21040; #1&#65306;&#20174; U1(U2) &#21040; T(int)&#65306;&#22833;&#36133;</span>
<span class="co1">// &#20174; #1 &#21040; #2&#65306;&#20174; U1(int) &#21040; T(U) &#65306;&#25104;&#21151;&#65306;U=int, T &#26410;&#20351;&#29992;</span>
<span class="co1">// &#35843;&#29992; #1</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#23545;&#21253;&#21547;&#27169;&#26495;&#24418;&#21442;&#21253;&#30340;&#20989;&#25968;&#27169;&#26495;&#36827;&#34892;&#30340;&#20559;&#24207;&#22788;&#29702;&#65292;&#19982;&#20026;&#36825;&#20123;&#27169;&#26495;&#24418;&#21442;&#21253;&#25152;&#25512;&#23548;&#30340;&#23454;&#21442;&#25968;&#37327;&#26080;&#20851;&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span>...<span class="sy1">&gt;</span> <span class="kw1">struct</span> Tuple <span class="br0">{</span> <span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">template</span><span class="sy1">&lt;</span> <span class="kw1">class</span>... <span class="me1">Types</span><span class="sy1">&gt;</span> <span class="kw4">void</span> g<span class="br0">(</span>Tuple<span class="sy1">&lt;</span>Types ...<span class="sy1">&gt;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #1</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T1, <span class="kw1">class</span>... <span class="me1">Types</span><span class="sy1">&gt;</span> <span class="kw4">void</span> g<span class="br0">(</span>Tuple<span class="sy1">&lt;</span>T1, Types ...<span class="sy1">&gt;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #2</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T1, <span class="kw1">class</span>... <span class="me1">Types</span><span class="sy1">&gt;</span> <span class="kw4">void</span> g<span class="br0">(</span>Tuple<span class="sy1">&lt;</span>T1, Types<span class="sy3">&amp;</span> ...<span class="sy1">&gt;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #3</span>
g<span class="br0">(</span>Tuple<span class="sy1">&lt;&gt;</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992; #1</span>
g<span class="br0">(</span>Tuple<span class="sy1">&lt;</span><span class="kw4">int</span>, <span class="kw4">float</span><span class="sy1">&gt;</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992; #2</span>
g<span class="br0">(</span>Tuple<span class="sy1">&lt;</span><span class="kw4">int</span>, <span class="kw4">float</span><span class="sy3">&amp;</span><span class="sy1">&gt;</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992; #3</span>
g<span class="br0">(</span>Tuple<span class="sy1">&lt;</span><span class="kw4">int</span><span class="sy1">&gt;</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992; #3</span></pre></div>
</div>
<p><br /></p>
<table class="metadata plainlinks ambox mbox-small-left ambox-notice" style="">
<tr>
<td class="mbox-empty-cell"></td>
<td class="mbox-text" style="">&#26412;&#33410;&#26410;&#23436;&#25104;<br />
&#21407;&#22240;&#65306;14.8.3[temp.over]</td>
</tr>
</table>
<p>&#20026;&#32534;&#35793;&#23545;&#20989;&#25968;&#27169;&#26495;&#30340;&#35843;&#29992;&#65292;&#32534;&#35793;&#22120;&#24517;&#39035;&#22312;&#38750;&#27169;&#26495;&#37325;&#36733;&#12289;&#27169;&#26495;&#37325;&#36733;&#21644;&#27169;&#26495;&#37325;&#36733;&#30340;&#29305;&#21270;&#38388;&#20316;&#20986;&#20915;&#23450;&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>T<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #1&#65306;&#27169;&#26495;&#37325;&#36733;</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>T<span class="sy2">*</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #2&#65306;&#27169;&#26495;&#37325;&#36733;</span>
<span class="kw4">void</span> f<span class="br0">(</span><span class="kw4">double</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #3&#65306;&#38750;&#27169;&#26495;&#37325;&#36733;</span>
<span class="kw1">template</span><span class="sy1">&lt;&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span><span class="kw4">int</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #4&#65306;#1 &#30340;&#29305;&#21270;</span>
f<span class="br0">(</span><span class="st0">&#39;a&#39;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992; #1</span>
f<span class="br0">(</span>new <span class="kw4">int</span><span class="br0">(</span><span class="nu0">1</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992; #2</span>
f<span class="br0">(</span><span class="nu16">1.0</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992; #3</span>
f<span class="br0">(</span><span class="nu0">1</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992; #4</span></pre></div>
</div>
<h3><span class="mw-headline" id=".E5.87.BD.E6.95.B0.E9.87.8D.E8.BD.BD_vs_.E5.87.BD.E6.95.B0.E7.89.B9.E5.8C.96">&#20989;&#25968;&#37325;&#36733; vs &#20989;&#25968;&#29305;&#21270;</span></h3>
<p>&#27880;&#24847;&#65292;&#21482;&#26377;&#38750;&#27169;&#26495;&#21644;&#20027;&#27169;&#26495;&#37325;&#36733;&#21442;&#19982;&#37325;&#36733;&#20915;&#35758;&#12290;&#29305;&#21270;&#24182;&#19981;&#26159;&#37325;&#36733;&#65292;&#22240;&#27492;&#19981;&#21463;&#32771;&#34385;&#12290;&#21482;&#26377;&#22312;&#37325;&#36733;&#20915;&#35758;&#36873;&#25321;&#26368;&#20339;&#21305;&#37197;&#30340;&#20027;&#20989;&#25968;&#27169;&#26495;&#21518;&#65292;&#25165;&#26816;&#39564;&#23427;&#30340;&#29305;&#21270;&#20197;&#26597;&#30475;&#26368;&#20339;&#21305;&#37197;&#32773;&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>T<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #1&#65306;&#25152;&#26377;&#31867;&#22411;&#30340;&#37325;&#36733;</span>
<span class="kw1">template</span><span class="sy1">&lt;&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span><span class="kw4">int</span><span class="sy2">*</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #2&#65306;#1 &#30340;&#29305;&#21270;&#65292;&#38024;&#23545;&#25351;&#21521; int &#30340;&#25351;&#38024;</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>T<span class="sy2">*</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// #3&#65306;&#25152;&#26377;&#25351;&#38024;&#31867;&#22411;&#30340;&#37325;&#36733;</span>
f<span class="br0">(</span>new <span class="kw4">int</span><span class="br0">(</span><span class="nu0">1</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992; #3&#65292;&#34429;&#28982; #1 &#30340;&#29305;&#21270;&#26159;&#23436;&#32654;&#21305;&#37197;</span></pre></div>
</div>
<p>&#22312;&#23545;&#32763;&#35793;&#21333;&#20803;&#30340;&#22836;&#25991;&#20214;&#36827;&#34892;&#25490;&#24207;&#26102;&#65292;&#35760;&#20303;&#27492;&#35268;&#21017;&#24456;&#37325;&#35201;&#12290;&#26377;&#20851;&#20989;&#25968;&#37325;&#36733;&#19982;&#20989;&#25968;&#29305;&#21270;&#20043;&#38388;&#30340;&#26356;&#22810;&#31034;&#20363;&#22312;&#19979;&#38754;&#23637;&#24320;&#65306;</p>
<hr />
<table style="border-style: none; border-spacing: 2px; width: 100%;" class="mw-collapsible mw-collapsed">
<tr>
<td>
<p><br /></p>
</td>
</tr>
<tr>
<td>
<p>&#39318;&#20808;&#32771;&#34385;&#19968;&#20123;&#19981;&#20351;&#29992;&#23454;&#21442;&#20381;&#36182;&#26597;&#25214;&#30340;&#22330;&#26223;&#12290;&#23545;&#20110;&#36825;&#31181;&#24773;&#20917;&#65292;&#25105;&#20204;&#20351;&#29992;&#35843;&#29992; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="br0">(</span>f<span class="br0">)</span><span class="br0">(</span>t<span class="br0">)</span></span></span>&#12290;&#22914; <a href="cpp-language-adl.html">ADL</a> &#20013;&#30340;&#25551;&#36848;&#65292;&#23558;&#20989;&#25968;&#21517;&#21253;&#22312;&#25324;&#21495;&#20013;&#21487;&#25233;&#21046;&#23454;&#21442;&#20381;&#36182;&#26597;&#25214;&#12290;</p>
<ul>
<li>&#22312; <span class="t-c"><span class="mw-geshi cpp source-cpp">g<span class="br0">(</span><span class="br0">)</span></span></span> &#20013;&#22768;&#26126;&#30340;<i>&#24341;&#29992;&#28857;</i>&#20043;&#21069;&#30340;&#22810;&#20010; <span class="t-c"><span class="mw-geshi cpp source-cpp">f<span class="br0">(</span><span class="br0">)</span></span></span> &#37325;&#36733;&#12290;</li>
</ul>
<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 &lt;iostream&gt;</span>
<span class="kw1">struct</span> A<span class="br0">{</span><span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>T<span class="br0">)</span> <span class="br0">{</span><a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;#1<span class="es1">\n</span>&quot;</span><span class="sy4">;</span><span class="br0">}</span> <span class="co1">// &#22312; f() &#30340;&#24341;&#29992;&#28857;&#21069;&#30340;&#37325;&#36733; #1</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>T<span class="sy2">*</span><span class="br0">)</span> <span class="br0">{</span><a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;#2<span class="es1">\n</span>&quot;</span><span class="sy4">;</span><span class="br0">}</span> <span class="co1">// &#22312; f() &#30340;&#24341;&#29992;&#28857;&#21069;&#30340;&#37325;&#36733; #2</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> g<span class="br0">(</span>T<span class="sy2">*</span> t<span class="br0">)</span>
<span class="br0">{</span>
<span class="br0">(</span>f<span class="br0">)</span><span class="br0">(</span>t<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// f() &#30340;&#24341;&#29992;&#28857;</span>
<span class="br0">}</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
A <span class="sy2">*</span>p <span class="sy1">=</span> nullptr<span class="sy4">;</span>
g<span class="br0">(</span>p<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// g() &#21644; f() &#30340;&#24341;&#29992;&#28857;</span>
<span class="br0">}</span>
<span class="co1">// #1 &#19982; #2 &#37117;&#34987;&#28155;&#21152;&#21040;&#20505;&#36873;&#21015;&#34920;&#65307;</span>
<span class="co1">// &#36873;&#25321; #2 &#22240;&#20026;&#23427;&#26159;&#26356;&#22909;&#30340;&#21305;&#37197;&#12290;</span></pre></div>
</div>
<p>&#36755;&#20986;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="text source-text">
<pre class="de1">#2</pre></div>
</div>
</div>
<p><br /></p>
<ul>
<li>&#21305;&#37197;&#36739;&#22909;&#30340;&#27169;&#26495;&#37325;&#36733;&#22312;&#24341;&#29992;&#28857;&#20043;&#21518;&#22768;&#26126;&#12290;</li>
</ul>
<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 &lt;iostream&gt;</span>
<span class="kw1">struct</span> A<span class="br0">{</span><span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>T<span class="br0">)</span> <span class="br0">{</span><a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;#1<span class="es1">\n</span>&quot;</span><span class="sy4">;</span><span class="br0">}</span> <span class="co1">// #1</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> g<span class="br0">(</span>T<span class="sy2">*</span> t<span class="br0">)</span>
<span class="br0">{</span>
<span class="br0">(</span>f<span class="br0">)</span><span class="br0">(</span>t<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// f() &#30340;&#24341;&#29992;&#28857;</span>
<span class="br0">}</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>T<span class="sy2">*</span><span class="br0">)</span> <span class="br0">{</span><a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;#2<span class="es1">\n</span>&quot;</span><span class="sy4">;</span><span class="br0">}</span> <span class="co1">// #2</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
A <span class="sy2">*</span>p <span class="sy1">=</span> nullptr<span class="sy4">;</span>
g<span class="br0">(</span>p<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// g() &#21644; f() &#30340;&#24341;&#29992;&#28857;</span>
<span class="br0">}</span>
<span class="co1">// &#21482;&#26377; #1 &#20250;&#28155;&#21152;&#21040;&#21040;&#20505;&#36873;&#21015;&#34920;&#65307;#2 &#22312;&#24341;&#29992;&#28857;&#20043;&#21518;&#23450;&#20041;&#65307;</span>
<span class="co1">// &#22240;&#27492;&#65292;&#21363;&#20351;&#23427;&#26159;&#36739;&#20339;&#21305;&#37197;&#65292;&#37325;&#36733;&#20063;&#19981;&#20250;&#32771;&#34385;&#23427;&#12290;</span></pre></div>
</div>
<p>&#36755;&#20986;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="text source-text">
<pre class="de1">#1</pre></div>
</div>
</div>
<p><br /></p>
<ul>
<li>&#21305;&#37197;&#36739;&#22909;&#30340;&#26174;&#24335;&#27169;&#26495;&#29305;&#21270;&#22312;&#24341;&#29992;&#28857;&#20043;&#21518;&#22768;&#26126;&#12290;</li>
</ul>
<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 &lt;iostream&gt;</span>
<span class="kw1">struct</span> A<span class="br0">{</span><span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>T<span class="br0">)</span> <span class="br0">{</span><a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;#1<span class="es1">\n</span>&quot;</span><span class="sy4">;</span><span class="br0">}</span> <span class="co1">// #1</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> g<span class="br0">(</span>T<span class="sy2">*</span> t<span class="br0">)</span>
<span class="br0">{</span>
<span class="br0">(</span>f<span class="br0">)</span><span class="br0">(</span>t<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// f() &#30340;&#24341;&#29992;&#28857;</span>
<span class="br0">}</span>
<span class="kw1">template</span><span class="sy1">&lt;&gt;</span> <span class="kw4">void</span> f<span class="sy1">&lt;&gt;</span><span class="br0">(</span>A<span class="sy2">*</span><span class="br0">)</span> <span class="br0">{</span><a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;#3<span class="es1">\n</span>&quot;</span><span class="sy4">;</span><span class="br0">}</span> <span class="co1">// #3</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
A <span class="sy2">*</span>p <span class="sy1">=</span> nullptr<span class="sy4">;</span>
g<span class="br0">(</span>p<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// g() &#21644; f() &#30340;&#24341;&#29992;&#28857;</span>
<span class="br0">}</span>
<span class="co1">// &#28155;&#21152; #1 &#21040;&#20505;&#36873;&#21015;&#34920;&#65307;#3 &#26159;&#22312;&#24341;&#29992;&#28857;&#21518;&#23450;&#20041;&#30340;&#36739;&#22909;&#21305;&#37197;&#12290;&#20505;&#36873;&#21015;&#34920;&#30001;&#26368;&#32456;&#34987;&#36873;&#25321;&#30340; #1 &#32452;&#25104;&#12290;</span>
<span class="co1">// &#20043;&#21518;&#65292;&#22312;&#24341;&#29992;&#28857;&#21518;&#22768;&#26126;&#30340; #1 &#30340;&#26174;&#24335;&#29305;&#21270; #3 &#34987;&#36873;&#25321;&#65292;&#22240;&#20026;&#23427;&#26159;&#36739;&#22909;&#30340;&#21305;&#37197;&#12290;</span>
<span class="co1">// &#27492;&#34892;&#20026;&#30001; 14.7.3/6 [temp.expl.spec] &#25484;&#25511;&#19988;&#19982; ADL &#26080;&#20851;&#12290;</span></pre></div>
</div>
<p>&#36755;&#20986;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="text source-text">
<pre class="de1">#3</pre></div>
</div>
</div>
<p><br /></p>
<ul>
<li>&#21305;&#37197;&#36739;&#22909;&#30340;&#27169;&#26495;&#37325;&#36733;&#22312;&#24341;&#29992;&#28857;&#20043;&#21518;&#22768;&#26126;&#12290;&#21305;&#37197;&#26368;&#20339;&#30340;&#26174;&#24335;&#27169;&#26495;&#29305;&#21270;&#22312;&#36825;&#20010;&#36739;&#22909;&#30340;&#21305;&#37197;&#37325;&#36733;&#20043;&#21518;&#22768;&#26126;&#12290;</li>
</ul>
<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 &lt;iostream&gt;</span>
<span class="kw1">struct</span> A<span class="br0">{</span><span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>T<span class="br0">)</span> <span class="br0">{</span><a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;#1<span class="es1">\n</span>&quot;</span><span class="sy4">;</span><span class="br0">}</span> <span class="co1">// #1</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> g<span class="br0">(</span>T<span class="sy2">*</span> t<span class="br0">)</span>
<span class="br0">{</span>
<span class="br0">(</span>f<span class="br0">)</span><span class="br0">(</span>t<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// f() &#30340;&#24341;&#29992;&#28857;</span>
<span class="br0">}</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>T<span class="sy2">*</span><span class="br0">)</span> <span class="br0">{</span><a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;#2<span class="es1">\n</span>&quot;</span><span class="sy4">;</span><span class="br0">}</span> <span class="co1">// #2</span>
<span class="kw1">template</span><span class="sy1">&lt;&gt;</span> <span class="kw4">void</span> f<span class="sy1">&lt;&gt;</span><span class="br0">(</span>A<span class="sy2">*</span><span class="br0">)</span> <span class="br0">{</span><a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;#3<span class="es1">\n</span>&quot;</span><span class="sy4">;</span><span class="br0">}</span> <span class="co1">// #3</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
A <span class="sy2">*</span>p <span class="sy1">=</span> nullptr<span class="sy4">;</span>
g<span class="br0">(</span>p<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// g() &#21644; f() &#30340;&#24341;&#29992;&#28857;</span>
<span class="br0">}</span>
<span class="co1">// #1 &#26159;&#20505;&#36873;&#21015;&#34920;&#30340;&#21807;&#19968;&#25104;&#21592;&#19988;&#23427;&#26368;&#32456;&#34987;&#36873;&#25321;&#12290;</span>
<span class="co1">// &#20043;&#21518;&#65292;&#36339;&#36807;&#26174;&#24335;&#29305;&#21270; #3&#65292;&#22240;&#20026;&#23427;&#23454;&#38469;&#29305;&#21270;&#20102;&#22312;&#24341;&#29992;&#28857;&#21518;&#22768;&#26126;&#30340; #2&#12290;</span></pre></div>
</div>
<p>&#36755;&#20986;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="text source-text">
<pre class="de1">#1</pre></div>
</div>
</div>
<p><br />
&#29616;&#22312;&#35753;&#25105;&#20204;&#32771;&#34385;&#20351;&#29992;&#23454;&#21442;&#20381;&#36182;&#26597;&#25214;&#30340;&#24773;&#20917;&#65288;&#21363;&#25105;&#20204;&#29992;&#26356;&#24120;&#35265;&#30340;&#35843;&#29992;&#26684;&#24335; <span class="t-c"><span class="mw-geshi cpp source-cpp">f<span class="br0">(</span>t<span class="br0">)</span></span></span>&#65289;&#12290;</p>
<ul>
<li>&#21305;&#37197;&#36739;&#22909;&#30340;&#27169;&#26495;&#37325;&#36733;&#22312;&#24341;&#29992;&#28857;&#20043;&#21518;&#22768;&#26126;&#12290;</li>
</ul>
<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 &lt;iostream&gt;</span>
<span class="kw1">struct</span> A<span class="br0">{</span><span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>T<span class="br0">)</span> <span class="br0">{</span><a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;#1<span class="es1">\n</span>&quot;</span><span class="sy4">;</span><span class="br0">}</span> <span class="co1">// #1</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> g<span class="br0">(</span>T<span class="sy2">*</span> t<span class="br0">)</span>
<span class="br0">{</span>
f<span class="br0">(</span>t<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// f() &#30340;&#24341;&#29992;&#28857;</span>
<span class="br0">}</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>T<span class="sy2">*</span><span class="br0">)</span> <span class="br0">{</span><a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;#2<span class="es1">\n</span>&quot;</span><span class="sy4">;</span><span class="br0">}</span> <span class="co1">// #2</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
A <span class="sy2">*</span>p <span class="sy1">=</span> nullptr<span class="sy4">;</span>
g<span class="br0">(</span>p<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// g() &#21644; f() &#30340;&#24341;&#29992;&#28857;</span>
<span class="br0">}</span>
<span class="co1">// #1 &#34987;&#20316;&#20026;&#24120;&#35268;&#26597;&#25214;&#30340;&#32467;&#26524;&#28155;&#21152;&#21040;&#20505;&#36873;&#21015;&#34920;&#65307;</span>
<span class="co1">// #2 &#22312;&#24341;&#29992;&#28857;&#20043;&#21518;&#23450;&#20041;&#20294;&#32463;&#30001; ADL &#26597;&#25214;&#28155;&#21152;&#21040;&#20505;&#36873;&#21015;&#34920;&#12290;</span>
<span class="co1">// #2 &#20316;&#20026;&#36739;&#22909;&#30340;&#21305;&#37197;&#34987;&#36873;&#25321;&#12290;</span></pre></div>
</div>
<p>&#36755;&#20986;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="text source-text">
<pre class="de1">#2</pre></div>
</div>
</div>
<p><br /></p>
<ul>
<li>&#21305;&#37197;&#36739;&#22909;&#30340;&#27169;&#26495;&#37325;&#36733;&#22312;&#24341;&#29992;&#28857;&#20043;&#21518;&#22768;&#26126;&#12290;&#21305;&#37197;&#26368;&#20339;&#30340;&#26174;&#24335;&#27169;&#26495;&#29305;&#21270;&#22312;&#36825;&#20010;&#21305;&#37197;&#36739;&#22909;&#30340;&#37325;&#36733;&#20043;&#21069;&#22768;&#26126;&#12290;</li>
</ul>
<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 &lt;iostream&gt;</span>
<span class="kw1">struct</span> A<span class="br0">{</span><span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>T<span class="br0">)</span> <span class="br0">{</span><a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;#1<span class="es1">\n</span>&quot;</span><span class="sy4">;</span><span class="br0">}</span> <span class="co1">// #1</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> g<span class="br0">(</span>T<span class="sy2">*</span> t<span class="br0">)</span>
<span class="br0">{</span>
f<span class="br0">(</span>t<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// f() &#30340;&#24341;&#29992;&#28857;</span>
<span class="br0">}</span>
<span class="kw1">template</span><span class="sy1">&lt;&gt;</span> <span class="kw4">void</span> f<span class="sy1">&lt;&gt;</span><span class="br0">(</span>A<span class="sy2">*</span><span class="br0">)</span> <span class="br0">{</span><a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;#3<span class="es1">\n</span>&quot;</span><span class="sy4">;</span><span class="br0">}</span> <span class="co1">// #3</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>T<span class="sy2">*</span><span class="br0">)</span> <span class="br0">{</span><a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;#2<span class="es1">\n</span>&quot;</span><span class="sy4">;</span><span class="br0">}</span> <span class="co1">// #2</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
A <span class="sy2">*</span>p <span class="sy1">=</span> nullptr<span class="sy4">;</span>
g<span class="br0">(</span>p<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// g() &#21644; f() &#30340;&#24341;&#29992;&#28857;</span>
<span class="br0">}</span>
<span class="co1">// #1 &#34987;&#20316;&#20026;&#24120;&#35268;&#26597;&#25214;&#30340;&#32467;&#26524;&#28155;&#21152;&#21040;&#20505;&#36873;&#21015;&#34920;&#65307;</span>
<span class="co1">// #2 &#22312;&#24341;&#29992;&#28857;&#20043;&#21518;&#23450;&#20041;&#20294;&#32463;&#30001; ADL &#26597;&#25214;&#28155;&#21152;&#21040;&#20505;&#36873;&#21015;&#34920;&#12290;</span>
<span class="co1">// &#20316;&#20026;&#36739;&#22909;&#30340;&#21305;&#37197;&#65292;&#20174;&#21508;&#20027;&#27169;&#26495;&#20013;&#36873;&#25321; #2&#12290;</span>
<span class="co1">// &#22240;&#20026; #3 &#22312; #2 &#20043;&#21069;&#22768;&#26126;&#65292;&#25152;&#20197;&#23427;&#26159; #1 &#30340;&#26174;&#24335;&#29305;&#21270;&#12290;</span>
<span class="co1">// &#20174;&#32780;&#26368;&#32456;&#36873;&#25321; #2&#12290;</span></pre></div>
</div>
<p>&#36755;&#20986;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="text source-text">
<pre class="de1">#2</pre></div>
</div>
</div>
<p><br /></p>
<ul>
<li>&#21305;&#37197;&#36739;&#22909;&#30340;&#27169;&#26495;&#37325;&#36733;&#22312;&#24341;&#29992;&#28857;&#20043;&#21518;&#22768;&#26126;&#65292;&#21305;&#37197;&#26368;&#20339;&#30340;&#26174;&#24335;&#27169;&#26495;&#29305;&#21270;&#26368;&#21518;&#22768;&#26126;&#12290;</li>
</ul>
<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 &lt;iostream&gt;</span>
<span class="kw1">struct</span> A<span class="br0">{</span><span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>T<span class="br0">)</span> <span class="br0">{</span><a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;#1<span class="es1">\n</span>&quot;</span><span class="sy4">;</span><span class="br0">}</span> <span class="co1">// #1</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> g<span class="br0">(</span>T<span class="sy2">*</span> t<span class="br0">)</span>
<span class="br0">{</span>
f<span class="br0">(</span>t<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// f() &#30340;&#24341;&#29992;&#28857;</span>
<span class="br0">}</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T<span class="sy1">&gt;</span> <span class="kw4">void</span> f<span class="br0">(</span>T<span class="sy2">*</span><span class="br0">)</span> <span class="br0">{</span><a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;#2<span class="es1">\n</span>&quot;</span><span class="sy4">;</span><span class="br0">}</span> <span class="co1">// #2</span>
<span class="kw1">template</span><span class="sy1">&lt;&gt;</span> <span class="kw4">void</span> f<span class="sy1">&lt;&gt;</span><span class="br0">(</span>A<span class="sy2">*</span><span class="br0">)</span> <span class="br0">{</span><a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;#3<span class="es1">\n</span>&quot;</span><span class="sy4">;</span><span class="br0">}</span> <span class="co1">// #3</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
A <span class="sy2">*</span>p <span class="sy1">=</span> nullptr<span class="sy4">;</span>
g<span class="br0">(</span>p<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// g() &#21644; f() &#30340;&#24341;&#29992;&#28857;</span>
<span class="br0">}</span>
<span class="co1">// #1 &#34987;&#20316;&#20026;&#24120;&#35268;&#26597;&#25214;&#30340;&#32467;&#26524;&#28155;&#21152;&#21040;&#20505;&#36873;&#21015;&#34920;&#65307;</span>
<span class="co1">// #2 &#22312;&#24341;&#29992;&#28857;&#20043;&#21518;&#23450;&#20041;&#20294;&#32463;&#30001; ADL &#26597;&#25214;&#28155;&#21152;&#21040;&#20505;&#36873;&#21015;&#34920;&#12290;</span>
<span class="co1">// &#20316;&#20026;&#36739;&#22909;&#30340;&#21305;&#37197;&#65292;&#20174;&#21508;&#20027;&#27169;&#26495;&#20013;&#36873;&#25321; #2&#12290;</span>
<span class="co1">// &#22240;&#20026; #3 &#22312; #2 &#20043;&#21518;&#22768;&#26126;&#65292;&#25152;&#20197;&#23427;&#26159; #2 &#30340;&#26174;&#24335;&#29305;&#21270;&#65307;</span>
<span class="co1">// &#20174;&#32780;&#34987;&#36873;&#20026;&#35843;&#29992;&#30340;&#20989;&#25968;&#12290;</span></pre></div>
</div>
<p>&#36755;&#20986;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="text source-text">
<pre class="de1">#3</pre></div>
</div>
</div>
<p><br />
&#24403;&#23454;&#21442;&#26159;&#19968;&#20123; C++ &#22522;&#30784;&#31867;&#22411;&#26102;&#65292;&#27809;&#26377; ADL &#20851;&#32852;&#30340;&#21629;&#21517;&#31354;&#38388;&#12290;&#22240;&#27492;&#36825;&#20123;&#22330;&#26223;&#19982;&#19978;&#36848;&#38750; ADL &#31034;&#20363;&#31561;&#21516;&#12290;</p>
</td>
</tr>
</table>
<hr />
<p>&#26377;&#20851;&#37325;&#36733;&#20915;&#35758;&#30340;&#35814;&#32454;&#35268;&#21017;&#65292;&#35265;<a href="cpp-language-overload_resolution.html">&#37325;&#36733;&#20915;&#35758;</a>&#12290;</p>
<h3><span class="mw-headline" id=".E5.87.BD.E6.95.B0.E6.A8.A1.E6.9D.BF.E7.89.B9.E5.8C.96">&#20989;&#25968;&#27169;&#26495;&#29305;&#21270;</span></h3>
<table class="metadata plainlinks ambox mbox-small-left ambox-notice" style="">
<tr>
<td class="mbox-empty-cell"></td>
<td class="mbox-text" style="">&#26412;&#33410;&#26410;&#23436;&#25104;<br />
&#21407;&#22240;&#65306;14.8[temp.fct.spec] (note that 14.8.1[temp.arg.explicit] &#24050;&#22312;&#20840;&#29305;&#21270;&#19987;&#39064;&#65306;&#35201;&#20040;&#35753;&#20989;&#25968;&#29305;&#21270;&#21040;&#36825;&#37324;&#65306;&#32570;&#23569;&#37096;&#20998;&#29305;&#21270;&#12289;&#19982;&#20989;&#25968;&#37325;&#36733;&#30340;&#20132;&#20114;&#65292;&#25110;&#20165;&#24341;&#29992;&#37027;&#36793;</td>
</tr>
</table>
<h3><span class="mw-headline" id=".E7.BC.BA.E9.99.B7.E6.8A.A5.E5.91.8A">&#32570;&#38519;&#25253;&#21578;</span></h3>
<p>&#19979;&#21015;&#26356;&#25913;&#34892;&#20026;&#30340;&#32570;&#38519;&#25253;&#21578;&#36861;&#28335;&#22320;&#24212;&#29992;&#20110;&#20197;&#21069;&#20986;&#29256;&#30340; C++ &#26631;&#20934;&#12290;</p>
<table class="dsctable" style="font-size:0.8em">
<tr>
<th>DR</th>
<th>&#24212;&#29992;&#20110;</th>
<th>&#20986;&#29256;&#26102;&#30340;&#34892;&#20026;</th>
<th>&#27491;&#30830;&#34892;&#20026;</th>
</tr>
<tr>
<td><a rel="nofollow" class="external text" href="https://wg21.cmeerw.net/cwg/issue581">CWG 581</a></td>
<td>C++98</td>
<td>&#20801;&#35768;&#26500;&#36896;&#20989;&#25968;&#27169;&#26495;&#30340;&#26174;&#24335;&#29305;&#21270;&#25110;&#23454;&#20363;&#21270;&#20013;&#30340;&#27169;&#26495;&#24418;&#21442;&#21015;&#34920;</td>
<td>&#24050;&#31105;&#27490;</td>
</tr>
<tr>
<td><a rel="nofollow" class="external text" href="https://wg21.cmeerw.net/cwg/issue1321">CWG 1321</a></td>
<td>C++98</td>
<td>&#19981;&#26126;&#30830;&#39318;&#20010;&#22768;&#26126;&#19982;&#37325;&#22768;&#26126;&#20013;&#30340;&#30456;&#21516;&#24453;&#20915;&#21517;&#26159;&#21542;&#31561;&#20215;</td>
<td>&#23427;&#20204;&#31561;&#20215;&#24182;&#19988;&#21547;&#20041;&#19982;&#39318;&#20010;&#22768;&#26126;&#20013;&#30340;&#30456;&#21516;</td>
</tr>
<tr>
<td><a rel="nofollow" class="external text" href="https://wg21.cmeerw.net/cwg/issue1395">CWG 1395</a></td>
<td>C++11</td>
<td>&#20174;&#24418;&#21442;&#21253;&#25512;&#23548; A &#26102;&#22833;&#36133;&#65292;&#19988;&#23545;&#20110;&#31354;&#24418;&#21442;&#21253;&#27809;&#26377;&#20915;&#32988;&#35268;&#21017;</td>
<td>&#20801;&#35768;&#25512;&#23548;&#65292;&#28155;&#21152;&#20915;&#32988;&#35268;&#21017;</td>
</tr>
</table>
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">&#21442;&#38405;</span></h3>
<ul>
<li><a href="cpp-language-class_template.html">&#31867;&#27169;&#26495;</a></li>
<li><a href="cpp-language-function.html">&#20989;&#25968;&#22768;&#26126;</a></li>
</ul>
</div>
<div class="visualClear"></div>
</div>
</div>
</div>
</body>
</html>