1556 lines
147 KiB
HTML
1556 lines
147 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>标准库头文件 <functional></title>
|
|
<link rel="stylesheet" href="ext.css" />
|
|
<link rel="stylesheet" href="site_modules.css" />
|
|
</head>
|
|
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-cpp_header_functional skin-cppreference2 action-view cpp-navbar">
|
|
<div id="cpp-content-base">
|
|
<div id="content"><a id="top"></a>
|
|
<h1 id="firstHeading" class="firstHeading"><span style="font-size:0.7em; line-height:130%">标准库头文件</span> <functional></h1>
|
|
<div id="bodyContent">
|
|
<div id="contentSub"><span class="subpages">< <a href="cpp.html">cpp</a>‎ | <a href="cpp-header.html">header</a></span></div>
|
|
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
|
<p>此头文件是<a href="cpp-utility-functional.html">函数对象</a>库的一部分并提供标准<a href="cpp-utility-hash.html">散列函数</a>。</p>
|
|
<table class="t-dsc-begin">
|
|
<tr>
|
|
<td colspan="2">
|
|
<h3><span class="mw-headline" id=".E5.91.BD.E5.90.8D.E7.A9.BA.E9.97.B4">命名空间</span></h3>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td><a href="cpp-utility-functional-placeholders.html"><tt>placeholders</tt></a> <span class="t-mark-rev t-since-cxx11">(C++11)</span></td>
|
|
<td>对 <span class="t-lc"><a href="cpp-utility-functional-bind.html">std::bind</a></span> 表达式中的未绑定实参提供占位符</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h3><span class="mw-headline" id=".E7.B1.BB">类</span></h3>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h5><span class="mw-headline" id=".E5.8C.85.E8.A3.85">包装</span></h5>
|
|
</td>
|
|
</tr>
|
|
<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>包装具有指定函数调用签名的任意可复制构造类型的可调用对象<br />
|
|
<span class="t-mark">(类模板)</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>包装具有指定函数调用签名的任意类型的可调用对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-mem_fn.html"><span class="t-lines"><span>mem_fn</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>从成员指针创建出函数对象<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-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">可复制构造</span> <span style="font-family: Georgia, 'DejaVu Serif', serif; font-style:italic">(CopyConstructible)</span></a> 且<a href="cpp-named_req-CopyAssignable.html"><span style="font-style:italic">可复制赋值</span> <span style="font-family: Georgia, 'DejaVu Serif', serif; font-style:italic">(CopyAssignable)</span></a> 的引用包装器<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h5><span class="mw-headline" id=".E8.BE.85.E5.8A.A9.E7.B1.BB">辅助类</span></h5>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-bad_function_call.html"><span class="t-lines"><span>bad_function_call</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>调用空的 <span class="t-lc"><a href="cpp-utility-functional-function.html">std::function</a></span> 时抛出的异常<br />
|
|
<span class="t-mark">(类)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-is_bind_expression.html"><span class="t-lines"><span>is_bind_expression</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>指示对象为 <code>std::bind</code> 表达式,或能被用作这种表达式<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-is_placeholder.html"><span class="t-lines"><span>is_placeholder</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>表明一个对象是标准占位符,或者可以用作标准占位符<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h5><span class="mw-headline" id=".E7.AE.97.E6.9C.AF.E8.BF.90.E7.AE.97">算术运算</span></h5>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-plus.html"><span class="t-lines"><span>plus</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy2">+</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-minus.html"><span class="t-lines"><span>minus</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy2">-</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-multiplies.html"><span class="t-lines"><span>multiplies</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy2">*</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-divides.html"><span class="t-lines"><span>divides</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy2">/</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-modulus.html"><span class="t-lines"><span>modulus</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy2">%</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-negate.html"><span class="t-lines"><span>negate</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy2">-</span>x</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h5><span class="mw-headline" id=".E6.AF.94.E8.BE.83">比较</span></h5>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-equal_to.html"><span class="t-lines"><span>equal_to</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy1">==</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-not_equal_to.html"><span class="t-lines"><span>not_equal_to</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy3">!</span><span class="sy1">=</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-greater.html"><span class="t-lines"><span>greater</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy1">></span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-less.html"><span class="t-lines"><span>less</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy1"><</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-greater_equal.html"><span class="t-lines"><span>greater_equal</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy1">>=</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-less_equal.html"><span class="t-lines"><span>less_equal</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy1"><=</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h5><span class="mw-headline" id=".E6.A6.82.E5.BF.B5.E7.BA.A6.E6.9D.9F.E7.9A.84.E6.AF.94.E8.BE.83">概念约束的比较</span></h5>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-ranges-equal_to.html"><span class="t-lines"><span>ranges::equal_to</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>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy1">==</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-ranges-not_equal_to.html"><span class="t-lines"><span>ranges::not_equal_to</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>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy3">!</span><span class="sy1">=</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-ranges-greater.html"><span class="t-lines"><span>ranges::greater</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>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy1">></span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-ranges-less.html"><span class="t-lines"><span>ranges::less</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>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy1"><</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-ranges-greater_equal.html"><span class="t-lines"><span>ranges::greater_equal</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy1">>=</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-ranges-less_equal.html"><span class="t-lines"><span>ranges::less_equal</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy1"><=</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-compare-compare_three_way.html"><span class="t-lines"><span>compare_three_way</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>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy1"><=></span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类)</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h5><span class="mw-headline" id=".E9.80.BB.E8.BE.91.E8.BF.90.E7.AE.97">逻辑运算</span></h5>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-logical_and.html"><span class="t-lines"><span>logical_and</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy3">&&</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-logical_or.html"><span class="t-lines"><span>logical_or</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy3">||</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-logical_not.html"><span class="t-lines"><span>logical_not</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy3">!</span>x</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h5><span class="mw-headline" id=".E9.80.90.E4.BD.8D.E8.BF.90.E7.AE.97">逐位运算</span></h5>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-bit_and.html"><span class="t-lines"><span>bit_and</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy3">&</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-bit_or.html"><span class="t-lines"><span>bit_or</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy3">|</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-bit_xor.html"><span class="t-lines"><span>bit_xor</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy3">^</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-bit_not.html"><span class="t-lines"><span>bit_not</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx14">(C++14)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">~x</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h5><span class="mw-headline" id=".E5.8F.96.E5.8F.8D.E5.99.A8">取反器</span></h5>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-not_fn.html"><span class="t-lines"><span>not_fn</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx17">(C++17)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>创建返回其保有的函数对象的结果之补的函数对象<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h5><span class="mw-headline" id=".E6.81.92.E7.AD.89">恒等</span></h5>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-identity.html"><span class="t-lines"><span>identity</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>返回其未修改的参数的函数对象<br />
|
|
<span class="t-mark">(类)</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h5><span class="mw-headline" id=".E6.90.9C.E7.B4.A2.E5.99.A8">搜索器</span></h5>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-default_searcher.html"><span class="t-lines"><span>default_searcher</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>标准 C++ 库搜索算法实现<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-boyer_moore_searcher.html"><span class="t-lines"><span>boyer_moore_searcher</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>Boyer-Moore 搜索算法实现<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-boyer_moore_horspool_searcher.html"><span class="t-lines"><span>boyer_moore_horspool_searcher</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>Boyer-Moore-Horspool 搜索算法实现<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h5><span class="mw-headline" id=".E6.95.A3.E5.88.97">散列</span></h5>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-hash.html"><span class="t-lines"><span>hash</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>散列函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-hash.html"><span class="t-lines"><span>std::hash<span class="t-dsc-small"><<i>Arithmetic</i>></span></span><span>std::hash<span class="t-dsc-small"><<i>Enumeration</i>></span></span><span>std::hash<span class="t-dsc-small"><std::nullptr_t></span></span><span>std::hash<span class="t-dsc-small"><T*></span></span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td><span class="t-lc"><a href="cpp-utility-hash.html">std::hash</a></span> 对基础、枚举以及指针类型的特化<br />
|
|
<span class="t-mark">(类模板特化)</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h3><span class="mw-headline" id=".E5.B8.B8.E9.87.8F">常量</span></h3>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc-header">
|
|
<td colspan="2">
|
|
<div>定义于命名空间 <code>std::placeholders</code></div>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-placeholders.html"><span class="t-lines"><span>_1, _2, _3, _4, ...</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>用作 <code>std::bind</code> 表达式中的未绑定实参的占位符<br />
|
|
<span class="t-mark">(常量)</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h3><span class="mw-headline" id=".E5.87.BD.E6.95.B0">函数</span></h3>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-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>按顺序绑定一定数量的参数到函数对象<br />
|
|
<span class="t-mark">(函数模板)</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>绑定一或多个实参到函数对象<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-ref.html"><span class="t-lines"><span>ref</span><span>cref</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>创建具有从其实参推导的类型的 <span class="t-lc"><a href="cpp-utility-functional-reference_wrapper.html">std::reference_wrapper</a></span><br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-invoke.html"><span class="t-lines"><span>invoke</span><span>invoke_r</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx17">(C++17)</span></span><span><span class="t-mark-rev t-since-cxx23">(C++23)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>以给定实参<span class="t-rev-inl t-since-cxx23"><span>和可能指定的返回类型</span> <span><span class="t-mark-rev t-since-cxx23">(C++23 起)</span></span></span>调用任意<a href="cpp-named_req-Callable.html"><span style="font-style:italic">可调用</span> <span style="font-family: Georgia, 'DejaVu Serif', serif; font-style:italic">(Callable)</span></a> 对象<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id="C.2B.2B11_.E4.B8.AD.E5.BC.83.E7.94.A8.E5.B9.B6.E4.BA.8E_C.2B.2B17_.E7.A7.BB.E9.99.A4">C++11 中弃用并于 C++17 移除</span></h3>
|
|
<table class="t-dsc-begin">
|
|
<tr>
|
|
<td colspan="2">
|
|
<h5><span class="mw-headline" id=".E5.9F.BA.E7.B1.BB">基类</span></h5>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-unary_function.html"><span class="t-lines"><span>unary_function</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx11">(C++11 中弃用)</span></span><span><span class="t-mark-rev t-until-cxx17">(C++17 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>与适配器兼容的一元函数基类<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-binary_function.html"><span class="t-lines"><span>binary_function</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx11">(C++11 中弃用)</span></span><span><span class="t-mark-rev t-until-cxx17">(C++17 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>与适配器兼容的二元函数基类<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h5><span class="mw-headline" id=".E7.BB.91.E5.AE.9A.E5.99.A8">绑定器</span></h5>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-binder12.html"><span class="t-lines"><span>binder1st</span><span>binder2nd</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx11">(C++11 中弃用)</span><span class="t-mark-rev t-until-cxx17">(C++17 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>持有一个二元函数及其实参之一的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-bind12.html"><span class="t-lines"><span>bind1st</span><span>bind2nd</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx11">(C++11 中弃用)</span><span class="t-mark-rev t-until-cxx17">(C++17 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>将一个实参绑定到二元函数<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h5><span class="mw-headline" id=".E5.87.BD.E6.95.B0.E9.80.82.E9.85.8D.E5.99.A8">函数适配器</span></h5>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-pointer_to_unary_function.html"><span class="t-lines"><span>pointer_to_unary_function</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx11">(C++11 中弃用)</span></span><span><span class="t-mark-rev t-until-cxx17">(C++17 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>适配器兼容的包装,用于包装一元函数的指针<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-pointer_to_binary_function.html"><span class="t-lines"><span>pointer_to_binary_function</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx11">(C++11 中弃用)</span></span><span><span class="t-mark-rev t-until-cxx17">(C++17 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>适配器兼容的包装,用于包装二元函数的指针<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-ptr_fun.html"><span class="t-lines"><span>ptr_fun</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx11">(C++11 中弃用)</span><span class="t-mark-rev t-until-cxx17">(C++17 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>从函数指针创建与适配器兼容的函数对象包装器<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-mem_fun_t.html"><span class="t-lines"><span>mem_fun_t</span><span>mem_fun1_t</span><span>const_mem_fun_t</span><span>const_mem_fun1_t</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx11">(C++11 中弃用)</span></span><span><span class="t-mark-rev t-until-cxx17">(C++17 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>指向零元或一元成员函数指针的包装器,可以一个对象指针调用<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-mem_fun.html"><span class="t-lines"><span>mem_fun</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx11">(C++11 中弃用)</span><span class="t-mark-rev t-until-cxx17">(C++17 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>从成员函数指针创建包装器,可以一个对象指针调用<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-mem_fun_ref_t.html"><span class="t-lines"><span>mem_fun_ref_t</span><span>mem_fun1_ref_t</span><span>const_mem_fun_ref_t</span><span>const_mem_fun1_ref_t</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx11">(C++11 中弃用)</span></span><span><span class="t-mark-rev t-until-cxx17">(C++17 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>指向零元或一元成员函数指针的包装器,可以一个对象引用调用<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-mem_fun_ref.html"><span class="t-lines"><span>mem_fun_ref</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx11">(C++11 中弃用)</span></span><span><span class="t-mark-rev t-until-cxx17">(C++17 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>从成员函数指针创建包装器,能以一个对象引用调用<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id="C.2B.2B17_.E4.B8.AD.E5.BC.83.E7.94.A8.E5.B9.B6.E4.BA.8E_C.2B.2B20_.E7.A7.BB.E9.99.A4">C++17 中弃用并于 C++20 移除</span></h3>
|
|
<table class="t-dsc-begin">
|
|
<tr>
|
|
<td colspan="2">
|
|
<h5><span class="mw-headline" id=".E5.8F.96.E5.8F.8D.E5.99.A8_2">取反器</span></h5>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-unary_negate.html"><span class="t-lines"><span>unary_negate</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx17">(C++17 中弃用)</span></span><span><span class="t-mark-rev t-until-cxx20">(C++20 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>包装器函数对象,返回所持有的一元谓词的补<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-binary_negate.html"><span class="t-lines"><span>binary_negate</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx17">(C++17 中弃用)</span></span><span><span class="t-mark-rev t-until-cxx20">(C++20 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>包装器函数对象,返回所持有的二元谓词的补<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-not1.html"><span class="t-lines"><span>not1</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx17">(C++17 中弃用)</span><span class="t-mark-rev t-until-cxx20">(C++20 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>构造定制的 <span class="t-lc"><a href="cpp-utility-functional-unary_negate.html">std::unary_negate</a></span> 对象<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-not2.html"><span class="t-lines"><span>not2</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx17">(C++17 中弃用)</span><span class="t-mark-rev t-until-cxx20">(C++20 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>构造定制的 <span class="t-lc"><a href="cpp-utility-functional-binary_negate.html">std::binary_negate</a></span> 对象<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id=".E6.A6.82.E8.A6.81">概要</span></h3>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="co1">// invoke</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> F, <span class="kw1">class</span>... <span class="me1">Args</span><span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> invoke_result_t<span class="sy1"><</span>F, Args...<span class="sy1">></span> invoke<span class="br0">(</span>F<span class="sy3">&&</span> f, Args<span class="sy3">&&</span>... <span class="me1">args</span><span class="br0">)</span>
|
|
<span class="kw1">noexcept</span><span class="br0">(</span>is_nothrow_invocable_v<span class="sy1"><</span>F, Args...<span class="sy1">></span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> R, <span class="kw1">class</span> F, <span class="kw1">class</span>... <span class="me1">Args</span><span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> R invoke_r<span class="br0">(</span>F<span class="sy3">&&</span> f, Args<span class="sy3">&&</span>... <span class="me1">args</span><span class="br0">)</span>
|
|
<span class="kw1">noexcept</span><span class="br0">(</span>is_nothrow_invocable_r_v<span class="sy1"><</span>R, F, Args...<span class="sy1">></span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// reference_wrapper</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw1">class</span> reference_wrapper<span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw4">constexpr</span> reference_wrapper<span class="sy1"><</span>T<span class="sy1">></span> ref<span class="br0">(</span>T<span class="sy3">&</span><span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw4">constexpr</span> reference_wrapper<span class="sy1"><</span><span class="kw4">const</span> T<span class="sy1">></span> cref<span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&</span><span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw4">void</span> ref<span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&&</span><span class="br0">)</span> <span class="sy1">=</span> delete<span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw4">void</span> cref<span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&&</span><span class="br0">)</span> <span class="sy1">=</span> delete<span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> reference_wrapper<span class="sy1"><</span>T<span class="sy1">></span> ref<span class="br0">(</span>reference_wrapper<span class="sy1"><</span>T<span class="sy1">></span><span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> reference_wrapper<span class="sy1"><</span><span class="kw4">const</span> T<span class="sy1">></span> cref<span class="br0">(</span>reference_wrapper<span class="sy1"><</span>T<span class="sy1">></span><span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw1">struct</span> unwrap_reference<span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw1">using</span> unwrap_reference_t <span class="sy1">=</span> <span class="kw1">typename</span> unwrap_reference<span class="sy1"><</span>T<span class="sy1">></span><span class="sy4">::</span><span class="me2">type</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw1">struct</span> unwrap_ref_decay<span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw1">using</span> unwrap_ref_decay_t <span class="sy1">=</span> <span class="kw1">typename</span> unwrap_ref_decay<span class="sy1"><</span>T<span class="sy1">></span><span class="sy4">::</span><span class="me2">type</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 算术运算</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> plus<span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> minus<span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> multiplies<span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> divides<span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> modulus<span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> negate<span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> plus<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> minus<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> multiplies<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> divides<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> modulus<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> negate<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 比较</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> equal_to<span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> not_equal_to<span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> greater<span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> less<span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> greater_equal<span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> less_equal<span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> equal_to<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> not_equal_to<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> greater<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> less<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> greater_equal<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> less_equal<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 逻辑运算</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> logical_and<span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> logical_or<span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> logical_not<span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> logical_and<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> logical_or<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> logical_not<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 逐位运算</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> bit_and<span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> bit_or<span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> bit_xor<span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> bit_not<span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> bit_and<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> bit_or<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> bit_xor<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> bit_not<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// identity</span>
|
|
<span class="kw1">struct</span> identity<span class="sy4">;</span>
|
|
|
|
<span class="co1">// 函数模板 not_fn</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> F<span class="sy1">></span> <span class="kw4">constexpr</span> <span class="coMULTI">/* 未指明 */</span> not_fn<span class="br0">(</span>F<span class="sy3">&&</span> f<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 函数模板 bind_front</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> F, <span class="kw1">class</span>... <span class="me1">Args</span><span class="sy1">></span> <span class="kw4">constexpr</span> <span class="coMULTI">/* 未指明 */</span> bind_front<span class="br0">(</span>F<span class="sy3">&&</span>, Args<span class="sy3">&&</span>...<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// bind</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw1">struct</span> is_bind_expression<span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw1">struct</span> is_placeholder<span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> F, <span class="kw1">class</span>... <span class="me1">BoundArgs</span><span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="coMULTI">/* 未指明 */</span> bind<span class="br0">(</span>F<span class="sy3">&&</span>, BoundArgs<span class="sy3">&&</span>...<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> R, <span class="kw1">class</span> F, <span class="kw1">class</span>... <span class="me1">BoundArgs</span><span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="coMULTI">/* 未指明 */</span> bind<span class="br0">(</span>F<span class="sy3">&&</span>, BoundArgs<span class="sy3">&&</span>...<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">namespace</span> placeholders <span class="br0">{</span>
|
|
<span class="co1">// M 是实现定义的占位符数</span>
|
|
<span class="coMULTI">/* 见描述 */</span> _1<span class="sy4">;</span>
|
|
<span class="coMULTI">/* 见描述 */</span> _2<span class="sy4">;</span>
|
|
.
|
|
.
|
|
.
|
|
<span class="coMULTI">/* 见描述 */</span> _M<span class="sy4">;</span>
|
|
<span class="br0">}</span>
|
|
|
|
<span class="co1">// 成员函数适配器</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> R, <span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="coMULTI">/* 未指明 */</span> mem_fn<span class="br0">(</span>R T<span class="sy4">::</span><span class="sy2">*</span><span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 多态函数包装</span>
|
|
<span class="kw1">class</span> bad_function_call<span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span><span class="sy1">></span> <span class="kw1">class</span> function<span class="sy4">;</span> <span class="co1">// not defined</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> R, <span class="kw1">class</span>... <span class="me1">ArgTypes</span><span class="sy1">></span> <span class="kw1">class</span> function<span class="sy1"><</span>R<span class="br0">(</span>ArgTypes...<span class="br0">)</span><span class="sy1">></span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> R, <span class="kw1">class</span>... <span class="me1">ArgTypes</span><span class="sy1">></span>
|
|
<span class="kw4">void</span> swap<span class="br0">(</span>function<span class="sy1"><</span>R<span class="br0">(</span>ArgTypes...<span class="br0">)</span><span class="sy1">></span><span class="sy3">&</span>, function<span class="sy1"><</span>R<span class="br0">(</span>ArgTypes...<span class="br0">)</span><span class="sy1">></span><span class="sy3">&</span><span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> R, <span class="kw1">class</span>... <span class="me1">ArgTypes</span><span class="sy1">></span>
|
|
<span class="kw4">bool</span> operator<span class="sy1">==</span><span class="br0">(</span><span class="kw4">const</span> function<span class="sy1"><</span>R<span class="br0">(</span>ArgTypes...<span class="br0">)</span><span class="sy1">></span><span class="sy3">&</span>, nullptr_t<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 搜索器</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> ForwardIter, <span class="kw1">class</span> BinaryPredicate <span class="sy1">=</span> equal_to<span class="sy1"><>></span>
|
|
<span class="kw1">class</span> default_searcher<span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> RandomAccessIter,
|
|
<span class="kw1">class</span> Hash <span class="sy1">=</span> hash<span class="sy1"><</span><span class="kw1">typename</span> iterator_traits<span class="sy1"><</span>RandomAccessIter<span class="sy1">></span><span class="sy4">::</span><span class="me2">value_type</span><span class="sy1">></span>,
|
|
<span class="kw1">class</span> BinaryPredicate <span class="sy1">=</span> equal_to<span class="sy1"><>></span>
|
|
<span class="kw1">class</span> boyer_moore_searcher<span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> RandomAccessIter,
|
|
<span class="kw1">class</span> Hash <span class="sy1">=</span> hash<span class="sy1"><</span><span class="kw1">typename</span> iterator_traits<span class="sy1"><</span>RandomAccessIter<span class="sy1">></span><span class="sy4">::</span><span class="me2">value_type</span><span class="sy1">></span>,
|
|
<span class="kw1">class</span> BinaryPredicate <span class="sy1">=</span> equal_to<span class="sy1"><>></span>
|
|
<span class="kw1">class</span> boyer_moore_horspool_searcher<span class="sy4">;</span>
|
|
|
|
<span class="co1">// 散列函数主模板</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw1">struct</span> hash<span class="sy4">;</span>
|
|
|
|
<span class="co1">// 函数对象绑定器</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw1">inline</span> <span class="kw4">constexpr</span> <span class="kw4">bool</span> is_bind_expression_v <span class="sy1">=</span> is_bind_expression<span class="sy1"><</span>T<span class="sy1">></span><span class="sy4">::</span><span class="me2">value</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw1">inline</span> <span class="kw4">constexpr</span> <span class="kw4">int</span> is_placeholder_v <span class="sy1">=</span> is_placeholder<span class="sy1"><</span>T<span class="sy1">></span><span class="sy4">::</span><span class="me2">value</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">namespace</span> ranges <span class="br0">{</span>
|
|
<span class="co1">// 概念约束的比较</span>
|
|
<span class="kw1">struct</span> equal_to<span class="sy4">;</span>
|
|
<span class="kw1">struct</span> not_equal_to<span class="sy4">;</span>
|
|
<span class="kw1">struct</span> greater<span class="sy4">;</span>
|
|
<span class="kw1">struct</span> less<span class="sy4">;</span>
|
|
<span class="kw1">struct</span> greater_equal<span class="sy4">;</span>
|
|
<span class="kw1">struct</span> less_equal<span class="sy4">;</span>
|
|
<span class="br0">}</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::reference_wrapper">类模板 <span class="t-lc"><a href="cpp-utility-functional-reference_wrapper.html">std::reference_wrapper</a></span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw1">class</span> reference_wrapper <span class="br0">{</span>
|
|
<span class="kw1">public</span><span class="sy4">:</span>
|
|
<span class="co1">// 类型</span>
|
|
<span class="kw1">using</span> type <span class="sy1">=</span> T<span class="sy4">;</span>
|
|
|
|
<span class="co1">// 构造/复制/析构</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> U<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> reference_wrapper<span class="br0">(</span>U<span class="sy3">&&</span><span class="br0">)</span> <span class="kw1">noexcept</span><span class="br0">(</span>see below<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw4">constexpr</span> reference_wrapper<span class="br0">(</span><span class="kw4">const</span> reference_wrapper<span class="sy3">&</span> x<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 赋值</span>
|
|
<span class="kw4">constexpr</span> reference_wrapper<span class="sy3">&</span> operator<span class="sy1">=</span><span class="br0">(</span><span class="kw4">const</span> reference_wrapper<span class="sy3">&</span> x<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 访问</span>
|
|
<span class="kw4">constexpr</span> operator T<span class="sy3">&</span> <span class="br0">(</span><span class="br0">)</span> <span class="kw4">const</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw4">constexpr</span> T<span class="sy3">&</span> get<span class="br0">(</span><span class="br0">)</span> <span class="kw4">const</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 调用</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span>... <span class="me1">ArgTypes</span><span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> invoke_result_t<span class="sy1"><</span>T<span class="sy3">&</span>, ArgTypes...<span class="sy1">></span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>ArgTypes<span class="sy3">&&</span>...<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
reference_wrapper<span class="br0">(</span>T<span class="sy3">&</span><span class="br0">)</span> <span class="sy2">-</span><span class="sy1">></span> reference_wrapper<span class="sy1"><</span>T<span class="sy1">></span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::unwrap_reference">类模板 <span class="t-lc">std::unwrap_reference</span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw1">struct</span> unwrap_reference<span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::unwrap_ref_decay">类模板 <span class="t-lc">std::unwrap_ref_decay</span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw1">struct</span> unwrap_ref_decay<span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::plus">类模板 <span class="t-lc"><a href="cpp-utility-functional-plus.html">std::plus</a></span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> plus <span class="br0">{</span>
|
|
<span class="kw4">constexpr</span> T operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&</span> x, <span class="kw4">const</span> T<span class="sy3">&</span> y<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> plus<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span> <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">></span> <span class="kw4">constexpr</span> <span class="kw4">auto</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>T<span class="sy3">&&</span> t, U<span class="sy3">&&</span> u<span class="br0">)</span> <span class="kw4">const</span>
|
|
<span class="sy2">-</span><span class="sy1">></span> decltype<span class="br0">(</span><a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>T<span class="sy1">></span><span class="br0">(</span>t<span class="br0">)</span> <span class="sy2">+</span> <a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>U<span class="sy1">></span><span class="br0">(</span>u<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">using</span> is_transparent <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::minus">类模板 <span class="t-lc"><a href="cpp-utility-functional-minus.html">std::minus</a></span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> minus <span class="br0">{</span>
|
|
<span class="kw4">constexpr</span> T operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&</span> x, <span class="kw4">const</span> T<span class="sy3">&</span> y<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> minus<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span> <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">></span> <span class="kw4">constexpr</span> <span class="kw4">auto</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>T<span class="sy3">&&</span> t, U<span class="sy3">&&</span> u<span class="br0">)</span> <span class="kw4">const</span>
|
|
<span class="sy2">-</span><span class="sy1">></span> decltype<span class="br0">(</span><a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>T<span class="sy1">></span><span class="br0">(</span>t<span class="br0">)</span> <span class="sy2">-</span> <a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>U<span class="sy1">></span><span class="br0">(</span>u<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">using</span> is_transparent <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::multiplies">类模板 <span class="t-lc"><a href="cpp-utility-functional-multiplies.html">std::multiplies</a></span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> multiplies <span class="br0">{</span>
|
|
<span class="kw4">constexpr</span> T operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&</span> x, <span class="kw4">const</span> T<span class="sy3">&</span> y<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> multiplies<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span> <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">></span> <span class="kw4">constexpr</span> <span class="kw4">auto</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>T<span class="sy3">&&</span> t, U<span class="sy3">&&</span> u<span class="br0">)</span> <span class="kw4">const</span>
|
|
<span class="sy2">-</span><span class="sy1">></span> decltype<span class="br0">(</span><a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>T<span class="sy1">></span><span class="br0">(</span>t<span class="br0">)</span> <span class="sy2">*</span> <a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>U<span class="sy1">></span><span class="br0">(</span>u<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">using</span> is_transparent <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::divides">类模板 <span class="t-lc"><a href="cpp-utility-functional-divides.html">std::divides</a></span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> divides <span class="br0">{</span>
|
|
<span class="kw4">constexpr</span> T operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&</span> x, <span class="kw4">const</span> T<span class="sy3">&</span> y<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> divides<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span> <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">></span> <span class="kw4">constexpr</span> <span class="kw4">auto</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>T<span class="sy3">&&</span> t, U<span class="sy3">&&</span> u<span class="br0">)</span> <span class="kw4">const</span>
|
|
<span class="sy2">-</span><span class="sy1">></span> decltype<span class="br0">(</span><a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>T<span class="sy1">></span><span class="br0">(</span>t<span class="br0">)</span> <span class="sy2">/</span> <a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>U<span class="sy1">></span><span class="br0">(</span>u<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">using</span> is_transparent <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::modulus">类模板 <span class="t-lc"><a href="cpp-utility-functional-modulus.html">std::modulus</a></span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> modulus <span class="br0">{</span>
|
|
<span class="kw4">constexpr</span> T operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&</span> x, <span class="kw4">const</span> T<span class="sy3">&</span> y<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> modulus<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span> <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">></span> <span class="kw4">constexpr</span> <span class="kw4">auto</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>T<span class="sy3">&&</span> t, U<span class="sy3">&&</span> u<span class="br0">)</span> <span class="kw4">const</span>
|
|
<span class="sy2">-</span><span class="sy1">></span> decltype<span class="br0">(</span><a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>T<span class="sy1">></span><span class="br0">(</span>t<span class="br0">)</span> <span class="sy2">%</span> <a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>U<span class="sy1">></span><span class="br0">(</span>u<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">using</span> is_transparent <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::negate">类模板 <span class="t-lc"><a href="cpp-utility-functional-negate.html">std::negate</a></span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> negate <span class="br0">{</span>
|
|
<span class="kw4">constexpr</span> T operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&</span> x<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> negate<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span> <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw4">constexpr</span> <span class="kw4">auto</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>T<span class="sy3">&&</span> t<span class="br0">)</span> <span class="kw4">const</span>
|
|
<span class="sy2">-</span><span class="sy1">></span> decltype<span class="br0">(</span><span class="sy2">-</span><a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>T<span class="sy1">></span><span class="br0">(</span>t<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">using</span> is_transparent <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::equal_to">类模板 <span class="t-lc"><a href="cpp-utility-functional-equal_to.html">std::equal_to</a></span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> equal_to <span class="br0">{</span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&</span> x, <span class="kw4">const</span> T<span class="sy3">&</span> y<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> equal_to<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span> <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">></span> <span class="kw4">constexpr</span> <span class="kw4">auto</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>T<span class="sy3">&&</span> t, U<span class="sy3">&&</span> u<span class="br0">)</span> <span class="kw4">const</span>
|
|
<span class="sy2">-</span><span class="sy1">></span> decltype<span class="br0">(</span><a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>T<span class="sy1">></span><span class="br0">(</span>t<span class="br0">)</span> <span class="sy1">==</span> <a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>U<span class="sy1">></span><span class="br0">(</span>u<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">using</span> is_transparent <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::not_equal_to">类模板 <span class="t-lc"><a href="cpp-utility-functional-not_equal_to.html">std::not_equal_to</a></span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> not_equal_to <span class="br0">{</span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&</span> x, <span class="kw4">const</span> T<span class="sy3">&</span> y<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> not_equal_to<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span> <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">></span> <span class="kw4">constexpr</span> <span class="kw4">auto</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>T<span class="sy3">&&</span> t, U<span class="sy3">&&</span> u<span class="br0">)</span> <span class="kw4">const</span>
|
|
<span class="sy2">-</span><span class="sy1">></span> decltype<span class="br0">(</span><a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>T<span class="sy1">></span><span class="br0">(</span>t<span class="br0">)</span> <span class="sy3">!</span><span class="sy1">=</span> <a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>U<span class="sy1">></span><span class="br0">(</span>u<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">using</span> is_transparent <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::greater">类模板 <span class="t-lc"><a href="cpp-utility-functional-greater.html">std::greater</a></span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> greater <span class="br0">{</span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&</span> x, <span class="kw4">const</span> T<span class="sy3">&</span> y<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> greater<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span> <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">></span> <span class="kw4">constexpr</span> <span class="kw4">auto</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>T<span class="sy3">&&</span> t, U<span class="sy3">&&</span> u<span class="br0">)</span> <span class="kw4">const</span>
|
|
<span class="sy2">-</span><span class="sy1">></span> decltype<span class="br0">(</span><a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>T<span class="sy1">></span><span class="br0">(</span>t<span class="br0">)</span> <span class="sy1">></span> <a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>U<span class="sy1">></span><span class="br0">(</span>u<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">using</span> is_transparent <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::less">类模板 <span class="t-lc"><a href="cpp-utility-functional-less.html">std::less</a></span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> less <span class="br0">{</span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&</span> x, <span class="kw4">const</span> T<span class="sy3">&</span> y<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> less<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span> <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">></span> <span class="kw4">constexpr</span> <span class="kw4">auto</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>T<span class="sy3">&&</span> t, U<span class="sy3">&&</span> u<span class="br0">)</span> <span class="kw4">const</span>
|
|
<span class="sy2">-</span><span class="sy1">></span> decltype<span class="br0">(</span><a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>T<span class="sy1">></span><span class="br0">(</span>t<span class="br0">)</span> <span class="sy1"><</span> <a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>U<span class="sy1">></span><span class="br0">(</span>u<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">using</span> is_transparent <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::greater_equal">类模板 <span class="t-lc"><a href="cpp-utility-functional-greater_equal.html">std::greater_equal</a></span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> greater_equal <span class="br0">{</span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&</span> x, <span class="kw4">const</span> T<span class="sy3">&</span> y<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> greater_equal<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span> <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">></span> <span class="kw4">constexpr</span> <span class="kw4">auto</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>T<span class="sy3">&&</span> t, U<span class="sy3">&&</span> u<span class="br0">)</span> <span class="kw4">const</span>
|
|
<span class="sy2">-</span><span class="sy1">></span> decltype<span class="br0">(</span><a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>T<span class="sy1">></span><span class="br0">(</span>t<span class="br0">)</span> <span class="sy1">>=</span> <a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>U<span class="sy1">></span><span class="br0">(</span>u<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">using</span> is_transparent <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::less_equal">类模板 <span class="t-lc"><a href="cpp-utility-functional-less_equal.html">std::less_equal</a></span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> less_equal <span class="br0">{</span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&</span> x, <span class="kw4">const</span> T<span class="sy3">&</span> y<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> less_equal<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span> <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">></span> <span class="kw4">constexpr</span> <span class="kw4">auto</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>T<span class="sy3">&&</span> t, U<span class="sy3">&&</span> u<span class="br0">)</span> <span class="kw4">const</span>
|
|
<span class="sy2">-</span><span class="sy1">></span> decltype<span class="br0">(</span><a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>T<span class="sy1">></span><span class="br0">(</span>t<span class="br0">)</span> <span class="sy1"><=</span> <a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>U<span class="sy1">></span><span class="br0">(</span>u<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">using</span> is_transparent <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB_std::ranges::equal_to">类 <span class="t-lc">std::ranges::equal_to</span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std<span class="sy4">::</span><span class="me2">ranges</span> <span class="br0">{</span>
|
|
<span class="kw1">struct</span> equal_to <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>T<span class="sy3">&&</span> t, U<span class="sy3">&&</span> u<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">using</span> is_transparent <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB_std::ranges::not_equal_to">类 <span class="t-lc">std::ranges::not_equal_to</span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std<span class="sy4">::</span><span class="me2">ranges</span> <span class="br0">{</span>
|
|
<span class="kw1">struct</span> not_equal_to <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>T<span class="sy3">&&</span> t, U<span class="sy3">&&</span> u<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">using</span> is_transparent <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB_std::ranges::greater">类 <span class="t-lc">std::ranges::greater</span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std<span class="sy4">::</span><span class="me2">ranges</span> <span class="br0">{</span>
|
|
<span class="kw1">struct</span> greater <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>T<span class="sy3">&&</span> t, U<span class="sy3">&&</span> u<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">using</span> is_transparent <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB_std::ranges::less">类 <span class="t-lc">std::ranges::less</span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std<span class="sy4">::</span><span class="me2">ranges</span> <span class="br0">{</span>
|
|
<span class="kw1">struct</span> less <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>T<span class="sy3">&&</span> t, U<span class="sy3">&&</span> u<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">using</span> is_transparent <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB_std::ranges::greater_equal">类 <span class="t-lc">std::ranges::greater_equal</span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std<span class="sy4">::</span><span class="me2">ranges</span> <span class="br0">{</span>
|
|
<span class="kw1">struct</span> greater_equal <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>T<span class="sy3">&&</span> t, U<span class="sy3">&&</span> u<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">using</span> is_transparent <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB_std::ranges::less_equal">类 <span class="t-lc">std::ranges::less_equal</span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std<span class="sy4">::</span><span class="me2">ranges</span> <span class="br0">{</span>
|
|
<span class="kw1">struct</span> less_equal <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>T<span class="sy3">&&</span> t, U<span class="sy3">&&</span> u<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">using</span> is_transparent <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::logical_and">类模板 <span class="t-lc"><a href="cpp-utility-functional-logical_and.html">std::logical_and</a></span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> logical_and <span class="br0">{</span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&</span> x, <span class="kw4">const</span> T<span class="sy3">&</span> y<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> logical_and<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span> <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">></span> <span class="kw4">constexpr</span> <span class="kw4">auto</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>T<span class="sy3">&&</span> t, U<span class="sy3">&&</span> u<span class="br0">)</span> <span class="kw4">const</span>
|
|
<span class="sy2">-</span><span class="sy1">></span> decltype<span class="br0">(</span><a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>T<span class="sy1">></span><span class="br0">(</span>t<span class="br0">)</span> <span class="sy3">&&</span> <a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>U<span class="sy1">></span><span class="br0">(</span>u<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">using</span> is_transparent <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::logical_or">类模板 <span class="t-lc"><a href="cpp-utility-functional-logical_or.html">std::logical_or</a></span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> logical_or <span class="br0">{</span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&</span> x, <span class="kw4">const</span> T<span class="sy3">&</span> y<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> logical_or<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span> <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">></span> <span class="kw4">constexpr</span> <span class="kw4">auto</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>T<span class="sy3">&&</span> t, U<span class="sy3">&&</span> u<span class="br0">)</span> <span class="kw4">const</span>
|
|
<span class="sy2">-</span><span class="sy1">></span> decltype<span class="br0">(</span><a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>T<span class="sy1">></span><span class="br0">(</span>t<span class="br0">)</span> <span class="sy3">||</span> <a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>U<span class="sy1">></span><span class="br0">(</span>u<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">using</span> is_transparent <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::logical_not">类模板 <span class="t-lc"><a href="cpp-utility-functional-logical_not.html">std::logical_not</a></span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> logical_not <span class="br0">{</span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&</span> x<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> logical_not<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span> <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw4">constexpr</span> <span class="kw4">auto</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>T<span class="sy3">&&</span> t<span class="br0">)</span> <span class="kw4">const</span>
|
|
<span class="sy2">-</span><span class="sy1">></span> decltype<span class="br0">(</span><span class="sy3">!</span><a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>T<span class="sy1">></span><span class="br0">(</span>t<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">using</span> is_transparent <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::bit_and">类模板 <span class="t-lc"><a href="cpp-utility-functional-bit_and.html">std::bit_and</a></span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> bit_and <span class="br0">{</span>
|
|
<span class="kw4">constexpr</span> T operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&</span> x, <span class="kw4">const</span> T<span class="sy3">&</span> y<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> bit_and<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span> <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">></span> <span class="kw4">constexpr</span> <span class="kw4">auto</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>T<span class="sy3">&&</span> t, U<span class="sy3">&&</span> u<span class="br0">)</span> <span class="kw4">const</span>
|
|
<span class="sy2">-</span><span class="sy1">></span> decltype<span class="br0">(</span><a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>T<span class="sy1">></span><span class="br0">(</span>t<span class="br0">)</span> <span class="sy3">&</span> <a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>U<span class="sy1">></span><span class="br0">(</span>u<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">using</span> is_transparent <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::bit_or">类模板 <span class="t-lc"><a href="cpp-utility-functional-bit_or.html">std::bit_or</a></span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> bit_or <span class="br0">{</span>
|
|
<span class="kw4">constexpr</span> T operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&</span> x, <span class="kw4">const</span> T<span class="sy3">&</span> y<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> bit_or<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span> <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">></span> <span class="kw4">constexpr</span> <span class="kw4">auto</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>T<span class="sy3">&&</span> t, U<span class="sy3">&&</span> u<span class="br0">)</span> <span class="kw4">const</span>
|
|
<span class="sy2">-</span><span class="sy1">></span> decltype<span class="br0">(</span><a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>T<span class="sy1">></span><span class="br0">(</span>t<span class="br0">)</span> <span class="sy3">|</span> <a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>U<span class="sy1">></span><span class="br0">(</span>u<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">using</span> is_transparent <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::bit_xor">类模板 <span class="t-lc">std::bit_xor</span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> bit_xor <span class="br0">{</span>
|
|
<span class="kw4">constexpr</span> T operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&</span> x, <span class="kw4">const</span> T<span class="sy3">&</span> y<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> bit_xor<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span> <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U<span class="sy1">></span> <span class="kw4">constexpr</span> <span class="kw4">auto</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>T<span class="sy3">&&</span> t, U<span class="sy3">&&</span> u<span class="br0">)</span> <span class="kw4">const</span>
|
|
<span class="sy2">-</span><span class="sy1">></span> decltype<span class="br0">(</span><a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>T<span class="sy1">></span><span class="br0">(</span>t<span class="br0">)</span> <span class="sy3">^</span> <a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>U<span class="sy1">></span><span class="br0">(</span>u<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">using</span> is_transparent <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::bit_not">类模板 <span class="t-lc"><a href="cpp-utility-functional-bit_not.html">std::bit_not</a></span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T <span class="sy1">=</span> <span class="kw4">void</span><span class="sy1">></span> <span class="kw1">struct</span> bit_not <span class="br0">{</span>
|
|
<span class="kw4">constexpr</span> T operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&</span> x<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">struct</span> bit_not<span class="sy1"><</span><span class="kw4">void</span><span class="sy1">></span> <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw4">constexpr</span> <span class="kw4">auto</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>T<span class="sy3">&&</span> t<span class="br0">)</span> <span class="kw4">const</span>
|
|
<span class="sy2">-</span><span class="sy1">></span> decltype<span class="br0">(</span>~<a href="cpp-utility-forward.html"><span class="kw1117">std::<span class="me2">forward</span></span></a><span class="sy1"><</span>T<span class="sy1">></span><span class="br0">(</span>t<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">using</span> is_transparent <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::identity">类模板 <span class="t-lc">std::identity</span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">struct</span> identity <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> T<span class="sy3">&&</span> operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>T<span class="sy3">&&</span> t<span class="br0">)</span> <span class="kw4">const</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">using</span> is_transparent <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::is_bind_expression">类模板 <span class="t-lc"><a href="cpp-utility-functional-is_bind_expression.html">std::is_bind_expression</a></span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw1">struct</span> is_bind_expression<span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::is_placeholder">类模板 <span class="t-lc"><a href="cpp-utility-functional-is_placeholder.html">std::is_placeholder</a></span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw1">struct</span> is_placeholder<span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB_std::bad_function_call">类 <span class="t-lc"><a href="cpp-utility-functional-bad_function_call.html">std::bad_function_call</a></span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">class</span> bad_function_call <span class="sy4">:</span> <span class="kw1">public</span> exception <span class="br0">{</span>
|
|
<span class="kw1">public</span><span class="sy4">:</span>
|
|
<span class="co1">// 特殊成员函数的规定见 [exception]</span>
|
|
<span class="kw4">const</span> <span class="kw4">char</span><span class="sy2">*</span> what<span class="br0">(</span><span class="br0">)</span> <span class="kw4">const</span> <span class="kw1">noexcept</span> override<span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::function">类模板 <span class="t-lc"><a href="cpp-utility-functional-function.html">std::function</a></span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span><span class="sy1">></span> <span class="kw1">class</span> function<span class="sy4">;</span> <span class="co1">// 不定义</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> R, <span class="kw1">class</span>... <span class="me1">ArgTypes</span><span class="sy1">></span>
|
|
<span class="kw1">class</span> function<span class="sy1"><</span>R<span class="br0">(</span>ArgTypes...<span class="br0">)</span><span class="sy1">></span> <span class="br0">{</span>
|
|
<span class="kw1">public</span><span class="sy4">:</span>
|
|
<span class="kw1">using</span> result_type <span class="sy1">=</span> R<span class="sy4">;</span>
|
|
|
|
<span class="co1">// 构造/复制/销毁</span>
|
|
function<span class="br0">(</span><span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
function<span class="br0">(</span>nullptr_t<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
function<span class="br0">(</span><span class="kw4">const</span> function<span class="sy3">&</span><span class="br0">)</span><span class="sy4">;</span>
|
|
function<span class="br0">(</span>function<span class="sy3">&&</span><span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> F<span class="sy1">></span> function<span class="br0">(</span>F<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
function<span class="sy3">&</span> operator<span class="sy1">=</span><span class="br0">(</span><span class="kw4">const</span> function<span class="sy3">&</span><span class="br0">)</span><span class="sy4">;</span>
|
|
function<span class="sy3">&</span> operator<span class="sy1">=</span><span class="br0">(</span>function<span class="sy3">&&</span><span class="br0">)</span><span class="sy4">;</span>
|
|
function<span class="sy3">&</span> operator<span class="sy1">=</span><span class="br0">(</span>nullptr_t<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> F<span class="sy1">></span> function<span class="sy3">&</span> operator<span class="sy1">=</span><span class="br0">(</span>F<span class="sy3">&&</span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> F<span class="sy1">></span> function<span class="sy3">&</span> operator<span class="sy1">=</span><span class="br0">(</span>reference_wrapper<span class="sy1"><</span>F<span class="sy1">></span><span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
|
|
~function<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// function 修改器</span>
|
|
<span class="kw4">void</span> swap<span class="br0">(</span>function<span class="sy3">&</span><span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// function 容量</span>
|
|
<span class="kw1">explicit</span> operator <span class="kw4">bool</span><span class="br0">(</span><span class="br0">)</span> <span class="kw4">const</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// function 调用</span>
|
|
R operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>ArgTypes...<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// function 目标访问</span>
|
|
<span class="kw4">const</span> type_info<span class="sy3">&</span> target_type<span class="br0">(</span><span class="br0">)</span> <span class="kw4">const</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> T<span class="sy2">*</span> target<span class="br0">(</span><span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw4">const</span> T<span class="sy2">*</span> target<span class="br0">(</span><span class="br0">)</span> <span class="kw4">const</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> R, <span class="kw1">class</span>... <span class="me1">ArgTypes</span><span class="sy1">></span>
|
|
function<span class="br0">(</span>R<span class="br0">(</span><span class="sy2">*</span><span class="br0">)</span><span class="br0">(</span>ArgTypes...<span class="br0">)</span><span class="br0">)</span> <span class="sy2">-</span><span class="sy1">></span> function<span class="sy1"><</span>R<span class="br0">(</span>ArgTypes...<span class="br0">)</span><span class="sy1">></span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> F<span class="sy1">></span> function<span class="br0">(</span>F<span class="br0">)</span> <span class="sy2">-</span><span class="sy1">></span> function<span class="sy1"><</span><span class="coMULTI">/* see description */</span><span class="sy1">></span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 空指针比较函数</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> R, <span class="kw1">class</span>... <span class="me1">ArgTypes</span><span class="sy1">></span>
|
|
<span class="kw4">bool</span> operator<span class="sy1">==</span><span class="br0">(</span><span class="kw4">const</span> function<span class="sy1"><</span>R<span class="br0">(</span>ArgTypes...<span class="br0">)</span><span class="sy1">></span><span class="sy3">&</span>, nullptr_t<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 特化的算法</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> R, <span class="kw1">class</span>... <span class="me1">ArgTypes</span><span class="sy1">></span>
|
|
<span class="kw4">void</span> swap<span class="br0">(</span>function<span class="sy1"><</span>R<span class="br0">(</span>ArgTypes...<span class="br0">)</span><span class="sy1">></span><span class="sy3">&</span>, function<span class="sy1"><</span>R<span class="br0">(</span>ArgTypes...<span class="br0">)</span><span class="sy1">></span><span class="sy3">&</span><span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::move_only_function">类模板 <span class="t-lc">std::move_only_function</span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span>... <span class="me1">S</span><span class="sy1">></span> <span class="kw1">class</span> move_only_function<span class="sy4">;</span> <span class="co1">// 不定义</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> R, <span class="kw1">class</span>... <span class="me1">ArgTypes</span><span class="sy1">></span>
|
|
<span class="kw1">class</span> move_only_function<span class="sy1"><</span>R<span class="br0">(</span>ArgTypes...<span class="br0">)</span> <span class="coMULTI">/*cv-ref*/</span> <span class="kw1">noexcept</span><span class="br0">(</span><span class="coMULTI">/*noex*/</span><span class="br0">)</span><span class="sy1">></span> <span class="br0">{</span>
|
|
<span class="kw1">public</span><span class="sy4">:</span>
|
|
<span class="kw1">using</span> result_type <span class="sy1">=</span> R<span class="sy4">;</span>
|
|
|
|
<span class="co1">// 构造/移动/销毁</span>
|
|
move_only_function<span class="br0">(</span><span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
move_only_function<span class="br0">(</span>nullptr_t<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
move_only_function<span class="br0">(</span>move_only_function<span class="sy3">&&</span><span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> F<span class="sy1">></span> move_only_function<span class="br0">(</span>F<span class="sy3">&&</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span>... <span class="me1">Args</span><span class="sy1">></span>
|
|
<span class="kw1">explicit</span> move_only_function<span class="br0">(</span>in_place_type_t<span class="sy1"><</span>T<span class="sy1">></span>, Args<span class="sy3">&&</span>...<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> U, <span class="kw1">class</span>... <span class="me1">Args</span><span class="sy1">></span>
|
|
<span class="kw1">explicit</span> move_only_function<span class="br0">(</span>in_place_type_t<span class="sy1"><</span>T<span class="sy1">></span>, initializer_list<span class="sy1"><</span>U<span class="sy1">></span>, Args<span class="sy3">&&</span>...<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
move_only_function<span class="sy3">&</span> operator<span class="sy1">=</span><span class="br0">(</span>move_only_function<span class="sy3">&&</span><span class="br0">)</span><span class="sy4">;</span>
|
|
move_only_function<span class="sy3">&</span> operator<span class="sy1">=</span><span class="br0">(</span>nullptr_t<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> F<span class="sy1">></span> move_only_function<span class="sy3">&</span> operator<span class="sy1">=</span><span class="br0">(</span>F<span class="sy3">&&</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
~move_only_function<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// move_only_function 调用</span>
|
|
<span class="kw1">explicit</span> operator <span class="kw4">bool</span><span class="br0">(</span><span class="br0">)</span> <span class="kw4">const</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
|
|
R operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>ArgTypes...<span class="br0">)</span> <span class="coMULTI">/*cv-ref*/</span> <span class="kw1">noexcept</span><span class="br0">(</span><span class="coMULTI">/*noex*/</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// move_only_function 工具</span>
|
|
<span class="kw4">void</span> swap<span class="br0">(</span>move_only_function<span class="sy3">&</span><span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">friend</span> <span class="kw4">void</span> swap<span class="br0">(</span>move_only_function<span class="sy3">&</span>, move_only_function<span class="sy3">&</span><span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">friend</span> <span class="kw4">bool</span> operator<span class="sy1">==</span><span class="br0">(</span><span class="kw4">const</span> move_only_function<span class="sy3">&</span>, nullptr_t<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">private</span><span class="sy4">:</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> VT<span class="sy1">></span>
|
|
<span class="kw4">static</span> <span class="kw4">constexpr</span> <span class="kw4">bool</span> <span class="coMULTI">/*is-callable-from*/</span> <span class="sy1">=</span> <span class="coMULTI">/* 见描述 */</span><span class="sy4">;</span> <span class="co1">// 仅用于阐释</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::default_searcher">类模板 <span class="t-lc"><a href="cpp-utility-functional-default_searcher.html">std::default_searcher</a></span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> ForwardIter1, <span class="kw1">class</span> BinaryPredicate <span class="sy1">=</span> equal_to<span class="sy1"><>></span>
|
|
<span class="kw1">class</span> default_searcher <span class="br0">{</span>
|
|
<span class="kw1">public</span><span class="sy4">:</span>
|
|
<span class="kw4">constexpr</span> default_searcher<span class="br0">(</span>ForwardIter1 pat_first, ForwardIter1 pat_last,
|
|
BinaryPredicate pred <span class="sy1">=</span> BinaryPredicate<span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> ForwardIter2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> pair<span class="sy1"><</span>ForwardIter2, ForwardIter2<span class="sy1">></span>
|
|
operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>ForwardIter2 first, ForwardIter2 last<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">private</span><span class="sy4">:</span>
|
|
ForwardIter1 pat_first_<span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
ForwardIter1 pat_last_<span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
BinaryPredicate pred_<span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::boyer_moore_searcher">类模板 <span class="t-lc"><a href="cpp-utility-functional-boyer_moore_searcher.html">std::boyer_moore_searcher</a></span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> RandomAccessIter1,
|
|
<span class="kw1">class</span> Hash <span class="sy1">=</span> hash<span class="sy1"><</span><span class="kw1">typename</span> iterator_traits<span class="sy1"><</span>RandomAccessIter1<span class="sy1">></span><span class="sy4">::</span><span class="me2">value_type</span><span class="sy1">></span>,
|
|
<span class="kw1">class</span> BinaryPredicate <span class="sy1">=</span> equal_to<span class="sy1"><>></span>
|
|
<span class="kw1">class</span> boyer_moore_searcher <span class="br0">{</span>
|
|
<span class="kw1">public</span><span class="sy4">:</span>
|
|
boyer_moore_searcher<span class="br0">(</span>RandomAccessIter1 pat_first,
|
|
RandomAccessIter1 pat_last,
|
|
Hash hf <span class="sy1">=</span> Hash<span class="br0">(</span><span class="br0">)</span>,
|
|
BinaryPredicate pred <span class="sy1">=</span> BinaryPredicate<span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> RandomAccessIter2<span class="sy1">></span>
|
|
pair<span class="sy1"><</span>RandomAccessIter2, RandomAccessIter2<span class="sy1">></span>
|
|
operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>RandomAccessIter2 first, RandomAccessIter2 last<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">private</span><span class="sy4">:</span>
|
|
RandomAccessIter1 pat_first_<span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
RandomAccessIter1 pat_last_<span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
Hash hash_<span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
BinaryPredicate pred_<span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::boyer_moore_horspool_searcher">类模板 <span class="t-lc"><a href="cpp-utility-functional-boyer_moore_horspool_searcher.html">std::boyer_moore_horspool_searcher</a></span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> RandomAccessIter1,
|
|
<span class="kw1">class</span> Hash <span class="sy1">=</span> hash<span class="sy1"><</span><span class="kw1">typename</span> iterator_traits<span class="sy1"><</span>RandomAccessIter1<span class="sy1">></span><span class="sy4">::</span><span class="me2">value_type</span><span class="sy1">></span>,
|
|
<span class="kw1">class</span> BinaryPredicate <span class="sy1">=</span> equal_to<span class="sy1"><>></span>
|
|
<span class="kw1">class</span> boyer_moore_horspool_searcher <span class="br0">{</span>
|
|
<span class="kw1">public</span><span class="sy4">:</span>
|
|
boyer_moore_horspool_searcher<span class="br0">(</span>RandomAccessIter1 pat_first,
|
|
RandomAccessIter1 pat_last,
|
|
Hash hf <span class="sy1">=</span> Hash<span class="br0">(</span><span class="br0">)</span>,
|
|
BinaryPredicate pred <span class="sy1">=</span> BinaryPredicate<span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> RandomAccessIter2<span class="sy1">></span>
|
|
pair<span class="sy1"><</span>RandomAccessIter2, RandomAccessIter2<span class="sy1">></span>
|
|
operator<span class="br0">(</span><span class="br0">)</span><span class="br0">(</span>RandomAccessIter2 first, RandomAccessIter2 last<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">private</span><span class="sy4">:</span>
|
|
RandomAccessIter1 pat_first_<span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
RandomAccessIter1 pat_last_<span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
Hash hash_<span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
BinaryPredicate pred_<span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc">
|
|
<td><a href="cpp-header-string.html"><tt><string></tt></a></td>
|
|
<td>针对 <span class="t-lc"><a href="cpp-string-basic_string.html">std::string</a></span>、<span class="t-lc"><a href="cpp-string-basic_string.html">std::u16string</a></span>、<span class="t-lc"><a href="cpp-string-basic_string.html">std::u32string</a></span>、<span class="t-lc"><a href="cpp-string-basic_string.html">std::wstring</a></span> 特化 <span class="t-lc"><a href="cpp-utility-hash.html">std::hash</a></span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td><a href="cpp-header-string_view.html"><tt><string_view></tt></a></td>
|
|
<td>针对 <span class="t-lc"><a href="cpp-string-basic_string_view.html">std::string_view</a></span>、<span class="t-lc"><a href="cpp-string-basic_string_view.html">std::u16string_view</a></span>、<span class="t-lc"><a href="cpp-string-basic_string_view.html">std::u32string_view</a></span>、<span class="t-lc"><a href="cpp-string-basic_string_view.html">std::wstring_view</a></span> 特化 <span class="t-lc"><a href="cpp-utility-hash.html">std::hash</a></span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td><a href="cpp-header-system_error.html"><tt><system_error></tt></a></td>
|
|
<td>针对 <span class="t-lc"><a href="cpp-error-error_code.html">std::error_code</a></span> 特化 <span class="t-lc"><a href="cpp-utility-hash.html">std::hash</a></span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td><a href="cpp-header-bitset.html"><tt><bitset></tt></a></td>
|
|
<td>针对 <span class="t-lc"><a href="cpp-utility-bitset.html">std::bitset</a></span> 特化 <span class="t-lc"><a href="cpp-utility-hash.html">std::hash</a></span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td><a href="cpp-header-memory.html"><tt><memory></tt></a></td>
|
|
<td>针对 <span class="t-lc"><a href="cpp-memory-unique_ptr.html">std::unique_ptr</a></span>、<span class="t-lc"><a href="cpp-memory-shared_ptr.html">std::shared_ptr</a></span> 特化 <span class="t-lc"><a href="cpp-utility-hash.html">std::hash</a></span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td><a href="cpp-header-typeindex.html"><tt><typeindex></tt></a></td>
|
|
<td>针对 <span class="t-lc"><a href="cpp-types-type_index.html">std::type_index</a></span> 特化 <span class="t-lc"><a href="cpp-utility-hash.html">std::hash</a></span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td><a href="cpp-header-vector.html"><tt><vector></tt></a></td>
|
|
<td>针对 <span class="t-c"><span class="mw-geshi cpp source-cpp"><a href="cpp-container-vector.html"><span class="kw1269">std::<span class="me2">vector</span></span></a><span class="sy1"><</span><span class="kw4">bool</span><span class="sy1">></span></span></span> 特化 <span class="t-lc"><a href="cpp-utility-hash.html">std::hash</a></span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td><a href="cpp-header-thread.html"><tt><thread></tt></a></td>
|
|
<td>针对 <span class="t-lc"><a href="cpp-thread-thread-id.html">std::thread::id</a></span> 特化 <span class="t-lc"><a href="cpp-utility-hash.html">std::hash</a></span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td><a href="cpp-header-optional.html"><tt><optional></tt></a></td>
|
|
<td>针对 <span class="t-lc"><a href="cpp-utility-optional.html">std::optional</a></span> 特化 <span class="t-lc"><a href="cpp-utility-hash.html">std::hash</a></span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td><a href="cpp-header-variant.html"><tt><variant></tt></a></td>
|
|
<td>针对 <span class="t-lc"><a href="cpp-utility-variant.html">std::variant</a></span> 特化 <span class="t-lc"><a href="cpp-utility-hash.html">std::hash</a></span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td><a href="cpp-header-coroutine.html"><tt><coroutine></tt></a></td>
|
|
<td>针对 <span class="t-lc">std::coroutine_handle</span> 特化 <span class="t-lc"><a href="cpp-utility-hash.html">std::hash</a></span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td><a href="cpp-header-stacktrace.html"><tt><stacktrace></tt></a></td>
|
|
<td>针对 <span class="t-lc">std::stacktrace_entry</span> 及 <span class="t-lc">std::basic_stacktrace</span> 特化 <span class="t-lc"><a href="cpp-utility-hash.html">std::hash</a></span></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="visualClear"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|