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

234 lines
21 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>C++ &#20855;&#21517;&#35201;&#27714;&#65306;&#21487;&#35843;&#29992; (Callable)</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_named_req_Callable skin-cppreference2 action-view cpp-navbar">
<div id="cpp-content-base">
<div id="content"><a id="top"></a>
<h1 id="firstHeading" class="firstHeading"><span style="font-size:0.7em; line-height:130%">C++ &#20855;&#21517;&#35201;&#27714;&#65306;</span><span style="font-style:italic">&#21487;&#35843;&#29992;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(Callable)</span></h1>
<div id="bodyContent">
<div id="contentSub"><span class="subpages">&lt; <a href="cpp.html">cpp</a>&lrm; | <a href="cpp-named_req.html">named req</a></span></div>
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
<p><strong class="selflink"><span style="font-style:italic">&#21487;&#35843;&#29992;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(Callable)</span></strong> &#31867;&#22411;&#26159;&#21487;&#24212;&#29992; INVOKE &#25805;&#20316;&#65288;&#20363;&#22914;&#29992;&#20110; <span class="t-lc"><a href="cpp-utility-functional-function.html">std::function</a></span>&#12289;<span class="t-lc"><a href="cpp-utility-functional-bind.html">std::bind</a></span> &#21644; <span class="t-lc"><a href="cpp-thread-thread-thread.html">std::thread::thread</a></span>&#65289;&#30340;&#31867;&#22411;&#12290;<span class="t-rev-inl t-since-cxx17"><span>&#21487;&#20197;&#29992;&#24211;&#20989;&#25968; <span class="t-lc"><a href="cpp-utility-functional-invoke.html">std::invoke</a></span> &#26174;&#24335;&#36827;&#34892;&#27492;&#25805;&#20316;&#12290;</span> <span><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></span></span></p>
<h3><span class="mw-headline" id=".E8.A6.81.E6.B1.82">&#35201;&#27714;</span></h3>
<p>&#33509;&#28385;&#36275;&#19979;&#21015;&#26465;&#20214;&#65292;&#21017;&#31867;&#22411; <code>T</code> &#28385;&#36275;<span style="font-style:italic">&#21487;&#35843;&#29992;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(Callable)</span></p>
<p>&#32473;&#23450;</p>
<ul>
<li><code>T</code> &#31867;&#22411;&#30340;&#23545;&#35937; <code>f</code></li>
<li>&#36866;&#21512;&#30340;&#23454;&#21442;&#31867;&#22411;&#21015;&#34920; <code>ArgTypes</code></li>
<li>&#36866;&#21512;&#30340;&#36820;&#22238;&#31867;&#22411; <code>R</code></li>
</ul>
<p>&#21017;&#19979;&#21015;&#34920;&#36798;&#24335;&#24517;&#39035;&#21512;&#27861;&#65306;</p>
<table class="wikitable">
<tr>
<th>&#34920;&#36798;&#24335;</th>
<th>&#35201;&#27714;</th>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">INVOKE<span class="sy1">&lt;</span>R<span class="sy1">&gt;</span><span class="br0">(</span>f, <a href="cpp-utility-declval.html"><span class="kw1120">std::<span class="me2">declval</span></span></a><span class="sy1">&lt;</span>ArgTypes<span class="sy1">&gt;</span><span class="br0">(</span><span class="br0">)</span>...<span class="br0">)</span></span></span></td>
<td>&#35813;&#34920;&#36798;&#24335;&#22312;&#19981;&#27714;&#20540;&#35821;&#22659;&#20013;&#33391;&#26500;</td>
</tr>
</table>
<p>&#20854;&#20013; <i>INVOKE&lt;R&gt;(f, t1, t2, ..., tN)</i>&#65292;&#33509; <code>R</code> &#26159;&#21487;&#26377; cv &#38480;&#23450;&#30340; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">void</span></span></span>&#65292;&#21017;&#23450;&#20041;&#20026; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw1">static_cast</span><span class="sy1">&lt;</span><span class="kw4">void</span><span class="sy1">&gt;</span><span class="br0">(</span>INVOKE<span class="br0">(</span>f, t1, t2, ..., tN<span class="br0">)</span><span class="br0">)</span></span></span>&#65292;&#21542;&#21017;&#20026; <i>INVOKE(f, t1, t2, ..., tN)</i>&#65292;<a href="cpp-language-implicit_conversion.html">&#38544;&#24335;&#36716;&#25442;</a>&#25104; <code>R</code></p>
<p>&#20854;&#20013; <i>INVOKE(f, t1, t2, ..., tN)</i> &#23450;&#20041;&#22914;&#19979;&#65306;</p>
<ul>
<li>&#33509; <code>f</code> &#26159;&#31867; <code>T</code> &#30340;<a href="cpp-language-pointer.html#.E6.88.90.E5.91.98.E5.87.BD.E6.95.B0.E6.8C.87.E9.92.88">&#25104;&#21592;&#20989;&#25968;&#25351;&#38024;</a>&#65306;</li>
</ul>
<dl>
<dd>
<ul>
<li>&#33509; <span class="t-c"><span class="mw-geshi cpp source-cpp"><a href="cpp-types-is_base_of.html"><span class="kw590">std::<span class="me2">is_base_of</span></span></a><span class="sy1">&lt;</span>T, <a href="cpp-types-remove_reference.html"><span class="kw607">std::<span class="me2">remove_reference_t</span></span></a><span class="sy1">&lt;</span>decltype<span class="br0">(</span>t1<span class="br0">)</span><span class="sy1">&gt;&gt;</span><span class="sy4">::</span><span class="me2">value</span></span></span> &#20026; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">true</span></span></span>&#65292;&#21017; <span class="t-c"><span class="mw-geshi cpp source-cpp">INVOKE<span class="br0">(</span>f, t1, t2, ..., tN<span class="br0">)</span></span></span> &#31561;&#20215;&#20110; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="br0">(</span>t1.<span class="sy2">*</span>f<span class="br0">)</span><span class="br0">(</span>t2, ..., tN<span class="br0">)</span></span></span></li>
<li>&#21542;&#21017;&#65292;&#33509; <span class="t-c"><span class="mw-geshi cpp source-cpp">std<span class="sy4">::</span><span class="me2">remove_cvref_t</span><span class="sy1">&lt;</span>decltype<span class="br0">(</span>t1<span class="br0">)</span><span class="sy1">&gt;</span></span></span> &#20026; <span class="t-lc"><a href="cpp-utility-functional-reference_wrapper.html">std::reference_wrapper</a></span> &#30340;&#29305;&#21270;&#65292;&#21017; <span class="t-c"><span class="mw-geshi cpp source-cpp">INVOKE<span class="br0">(</span>f, t1, t2, ..., tN<span class="br0">)</span></span></span> &#31561;&#20215;&#20110; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="br0">(</span>t1.<span class="me1">get</span><span class="br0">(</span><span class="br0">)</span>.<span class="sy2">*</span>f<span class="br0">)</span><span class="br0">(</span>t2, ..., tN<span class="br0">)</span></span></span></li>
<li>&#21542;&#21017;&#65292;&#33509; <code>t1</code> &#19981;&#28385;&#36275;&#21069;&#36848;&#26465;&#20214;&#65292;&#21017; <span class="t-c"><span class="mw-geshi cpp source-cpp">INVOKE<span class="br0">(</span>f, t1, t2, ..., tN<span class="br0">)</span></span></span> &#31561;&#20215;&#20110; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="br0">(</span><span class="br0">(</span><span class="sy2">*</span>t1<span class="br0">)</span>.<span class="sy2">*</span>f<span class="br0">)</span><span class="br0">(</span>t2, ..., tN<span class="br0">)</span></span></span>&#12290;</li>
</ul>
</dd>
</dl>
<ul>
<li>&#21542;&#21017;&#65292;&#33509; N == 1 &#19988; <code>f</code> &#26159;&#31867; <code>T</code> &#30340;<a href="cpp-language-pointer.html#.E6.95.B0.E6.8D.AE.E6.88.90.E5.91.98.E6.8C.87.E9.92.88">&#25968;&#25454;&#25104;&#21592;&#25351;&#38024;</a>&#65306;</li>
</ul>
<dl>
<dd>
<ul>
<li>&#33509; <span class="t-c"><span class="mw-geshi cpp source-cpp"><a href="cpp-types-is_base_of.html"><span class="kw590">std::<span class="me2">is_base_of</span></span></a><span class="sy1">&lt;</span>T, <a href="cpp-types-remove_reference.html"><span class="kw607">std::<span class="me2">remove_reference_t</span></span></a><span class="sy1">&lt;</span>decltype<span class="br0">(</span>t1<span class="br0">)</span><span class="sy1">&gt;&gt;</span><span class="sy4">::</span><span class="me2">value</span></span></span> &#20026; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">true</span></span></span>&#65292;&#21017; <span class="t-c"><span class="mw-geshi cpp source-cpp">INVOKE<span class="br0">(</span>f, t1<span class="br0">)</span></span></span> &#31561;&#20215;&#20110; <span class="t-c"><span class="mw-geshi cpp source-cpp">t1.<span class="sy2">*</span>f</span></span></li>
<li>&#21542;&#21017;&#65292;&#33509; <span class="t-c"><span class="mw-geshi cpp source-cpp">std<span class="sy4">::</span><span class="me2">remove_cvref_t</span><span class="sy1">&lt;</span>decltype<span class="br0">(</span>t1<span class="br0">)</span><span class="sy1">&gt;</span></span></span> &#26159; <span class="t-lc"><a href="cpp-utility-functional-reference_wrapper.html">std::reference_wrapper</a></span> &#30340;&#29305;&#21270;&#65292;&#21017; <span class="t-c"><span class="mw-geshi cpp source-cpp">INVOKE<span class="br0">(</span>f, t1<span class="br0">)</span></span></span> &#31561;&#20215;&#20110; <span class="t-c"><span class="mw-geshi cpp source-cpp">t1.<span class="me1">get</span><span class="br0">(</span><span class="br0">)</span>.<span class="sy2">*</span>f</span></span></li>
<li>&#21542;&#21017;&#65292;&#33509; <code>t1</code> &#19981;&#28385;&#36275;&#21069;&#36848;&#26465;&#20214;&#65292;&#21017; <span class="t-c"><span class="mw-geshi cpp source-cpp">INVOKE<span class="br0">(</span>f, t1<span class="br0">)</span></span></span> &#31561;&#20215;&#20110; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="br0">(</span><span class="sy2">*</span>t1<span class="br0">)</span>.<span class="sy2">*</span>f</span></span></li>
</ul>
</dd>
</dl>
<ul>
<li>&#21542;&#21017;&#65292;<span class="t-c"><span class="mw-geshi cpp source-cpp">INVOKE<span class="br0">(</span>f, t1, t2, ..., tN<span class="br0">)</span></span></span> &#31561;&#20215;&#20110; <span class="t-c"><span class="mw-geshi cpp source-cpp">f<span class="br0">(</span>t1, t2, ..., tN<span class="br0">)</span></span></span>&#65288;&#21363; <code>f</code> &#26159;&#19968;&#20010;<a href="cpp-named_req-FunctionObject.html"><span style="font-style:italic">&#20989;&#25968;&#23545;&#35937;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(FunctionObject)</span></a> &#65289;</li>
</ul>
<h3><span class="mw-headline" id=".E6.B3.A8.E8.A7.A3">&#27880;&#35299;</span></h3>
<p>&#23545;&#20110;&#25104;&#21592;&#20989;&#25968;&#25351;&#38024;&#21644;&#25968;&#25454;&#25104;&#21592;&#25351;&#38024;&#65292;<code>t1</code> &#21487;&#20197;&#26159;&#19968;&#20010;&#24120;&#35268;&#25351;&#38024;&#25110;&#19968;&#20010;&#37325;&#36733;&#20102; <code>operator*</code> &#30340;&#31867;&#30340;&#23545;&#35937;&#65292;&#20363;&#22914; <span class="t-lc"><a href="cpp-memory-unique_ptr.html">std::unique_ptr</a></span> &#25110; <span class="t-lc"><a href="cpp-memory-shared_ptr.html">std::shared_ptr</a></span>&#12290;</p>
<p><a href="cpp-language-pointer.html#.E6.95.B0.E6.8D.AE.E6.88.90.E5.91.98.E6.8C.87.E9.92.88">&#25968;&#25454;&#25104;&#21592;&#25351;&#38024;</a>&#20026;<span style="font-style:italic">&#21487;&#35843;&#29992;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(Callable)</span> &#65292;&#23613;&#31649;&#24182;&#19981;&#21457;&#29983;&#20989;&#25968;&#35843;&#29992;&#12290;</p>
<h3><span class="mw-headline" id=".E6.A0.87.E5.87.86.E5.BA.93">&#26631;&#20934;&#24211;</span></h3>
<p>&#27492;&#22806;&#65292;&#19979;&#21015;&#26631;&#20934;&#24211;&#35774;&#26045;&#25509;&#21463;&#20219;&#20309;<span style="font-style:italic">&#21487;&#35843;&#29992;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(Callable)</span> &#31867;&#22411;&#65288;&#19981;&#20165;&#26159;<a href="cpp-named_req-FunctionObject.html"><span style="font-style:italic">&#20989;&#25968;&#23545;&#35937;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(FunctionObject)</span></a> &#65289;</p>
<table class="t-dsc-begin">
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-utility-functional-function.html"><span class="t-lines"><span>function</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
</div>
</td>
<td>&#21253;&#35013;&#20855;&#26377;&#25351;&#23450;&#20989;&#25968;&#35843;&#29992;&#31614;&#21517;&#30340;&#20219;&#24847;&#21487;&#22797;&#21046;&#26500;&#36896;&#31867;&#22411;&#30340;&#21487;&#35843;&#29992;&#23545;&#35937;<br />
<span class="t-mark">(&#31867;&#27169;&#26495;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-utility-functional-move_only_function.html"><span class="t-lines"><span>move_only_function</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx23">(C++23)</span></span></span></div>
</div>
</td>
<td>&#21253;&#35013;&#20855;&#26377;&#25351;&#23450;&#20989;&#25968;&#35843;&#29992;&#31614;&#21517;&#30340;&#20219;&#24847;&#31867;&#22411;&#30340;&#21487;&#35843;&#29992;&#23545;&#35937;<br />
<span class="t-mark">(&#31867;&#27169;&#26495;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-utility-functional-bind.html"><span class="t-lines"><span>bind</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
</div>
</td>
<td>&#32465;&#23450;&#19968;&#25110;&#22810;&#20010;&#23454;&#21442;&#21040;&#20989;&#25968;&#23545;&#35937;<br />
<span class="t-mark">(&#20989;&#25968;&#27169;&#26495;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-utility-functional-bind_front.html"><span class="t-lines"><span>bind_front</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
</div>
</td>
<td>&#25353;&#39034;&#24207;&#32465;&#23450;&#19968;&#23450;&#25968;&#37327;&#30340;&#21442;&#25968;&#21040;&#20989;&#25968;&#23545;&#35937;<br />
<span class="t-mark">(&#20989;&#25968;&#27169;&#26495;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-utility-functional-reference_wrapper.html"><span class="t-lines"><span>reference_wrapper</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
</div>
</td>
<td><a href="cpp-named_req-CopyConstructible.html"><span style="font-style:italic">&#21487;&#22797;&#21046;&#26500;&#36896;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(CopyConstructible)</span></a> &#19988;<a href="cpp-named_req-CopyAssignable.html"><span style="font-style:italic">&#21487;&#22797;&#21046;&#36171;&#20540;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(CopyAssignable)</span></a> &#30340;&#24341;&#29992;&#21253;&#35013;&#22120;<br />
<span class="t-mark">(&#31867;&#27169;&#26495;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-types-result_of.html"><span class="t-lines"><span>result_of</span><span>invoke_result</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span><span class="t-mark-rev t-until-cxx20">(C++20 &#20013;&#31227;&#38500;)</span></span><span><span class="t-mark-rev t-since-cxx17">(C++17)</span></span></span></div>
</div>
</td>
<td>&#25512;&#23548;&#20197;&#19968;&#32452;&#23454;&#21442;&#35843;&#29992;&#19968;&#20010;&#21487;&#35843;&#29992;&#23545;&#35937;&#30340;&#32467;&#26524;&#31867;&#22411;<br />
<span class="t-mark">(&#31867;&#27169;&#26495;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-thread-thread.html"><span class="t-lines"><span>thread</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
</div>
</td>
<td>&#31649;&#29702;&#21333;&#29420;&#30340;&#32447;&#31243;<br />
<span class="t-mark">(&#31867;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-thread-jthread.html"><span class="t-lines"><span>jthread</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
</div>
</td>
<td>&#26377;&#33258;&#21160;&#21512;&#24182;&#21644;&#21462;&#28040;&#25903;&#25345;&#30340; <span class="t-lc"><a href="cpp-thread-thread.html">std::thread</a></span><br />
<span class="t-mark">(&#31867;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-thread-call_once.html"><span class="t-lines"><span>call_once</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
</div>
</td>
<td>&#20165;&#35843;&#29992;&#20989;&#25968;&#19968;&#27425;&#65292;&#21363;&#20351;&#20174;&#22810;&#20010;&#32447;&#31243;&#35843;&#29992;<br />
<span class="t-mark">(&#20989;&#25968;&#27169;&#26495;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-thread-async.html"><span class="t-lines"><span>async</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
</div>
</td>
<td>&#24322;&#27493;&#36816;&#34892;&#19968;&#20010;&#20989;&#25968;&#65288;&#26377;&#21487;&#33021;&#22312;&#26032;&#32447;&#31243;&#20013;&#25191;&#34892;&#65289;&#65292;&#24182;&#36820;&#22238;&#20445;&#26377;&#20854;&#32467;&#26524;&#30340; <span class="t-lc"><a href="cpp-thread-future.html">std::future</a></span><br />
<span class="t-mark">(&#20989;&#25968;&#27169;&#26495;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-thread-packaged_task.html"><span class="t-lines"><span>packaged_task</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
</div>
</td>
<td>&#25171;&#21253;&#19968;&#20010;&#20989;&#25968;&#65292;&#23384;&#20648;&#20854;&#36820;&#22238;&#20540;&#20197;&#36827;&#34892;&#24322;&#27493;&#33719;&#21462;<br />
<span class="t-mark">(&#31867;&#27169;&#26495;)</span></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://cplusplus.github.io/LWG/issue2219">LWG 2219</a></td>
<td>C++11</td>
<td>&#19981;&#21487;&#33021;&#20197; <code>reference_wrapper</code> &#20026;&#23545;&#35937;&#34920;&#36798;&#24335; <code>INVOKE</code> &#25104;&#21592;&#25351;&#38024;</td>
<td>&#26816;&#27979;&#24182;&#22788;&#29702; <code>reference_wrapper</code></td>
</tr>
<tr>
<td><a rel="nofollow" class="external text" href="https://cplusplus.github.io/LWG/issue2420">LWG 2420</a></td>
<td>C++11</td>
<td>&#24403; <code>R</code> &#20026; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">void</span></span></span> &#26102;&#65292;&#35201;&#27714;&#20174;&#32467;&#26524;&#21040; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">void</span></span></span> &#30340;&#19981;&#21487;&#33021;&#30340;&#38544;&#24335;&#36716;&#25442;</td>
<td>&#24403; <code>R</code> &#20026; cv <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">void</span></span></span> &#26102;&#32467;&#26524;&#21487;&#26174;&#24335;&#36716;&#25442;&#20026; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">void</span></span></span></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">&#21442;&#38405;</span></h3>
<table class="t-dsc-begin">
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-types-is_invocable.html"><span class="t-lines"><span>is_invocable</span><span>is_invocable_r</span><span>is_nothrow_invocable</span><span>is_nothrow_invocable_r</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx17">(C++17)</span></span></span></div>
</div>
</td>
<td>&#26816;&#26597;&#31867;&#22411;&#33021;&#21542;&#20197;&#32473;&#23450;&#30340;&#23454;&#21442;&#31867;&#22411;&#35843;&#29992;&#65288;&#22914;&#21516;&#20197; <span class="t-lc"><a href="cpp-utility-functional-invoke.html">std::invoke</a></span>&#65289;<br />
<span class="t-mark">(&#31867;&#27169;&#26495;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-concepts-invocable.html"><span class="t-lines"><span>invocable</span><span>regular_invocable</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
</div>
</td>
<td>&#25351;&#23450;&#33021;&#20197;&#32473;&#23450;&#30340;&#19968;&#32452;&#23454;&#21442;&#31867;&#22411;&#35843;&#29992;&#30340;&#21487;&#35843;&#29992;&#31867;&#22411;<br />
<span class="t-mark">(&#27010;&#24565;)</span></td>
</tr>
</table>
</div>
<div class="visualClear"></div>
</div>
</div>
</div>
</body>
</html>