1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
4 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6 <meta name="generator" content="Doxygen 1.9.1"/>
7 <meta name="viewport" content="width=device-width, initial-scale=1"/>
8 <title>libsigc++: sigc::deduce_result_type< T_functor, T_args > Struct Template Reference</title>
9 <link href="tabs.css" rel="stylesheet" type="text/css"/>
10 <script type="text/javascript" src="jquery.js"></script>
11 <script type="text/javascript" src="dynsections.js"></script>
12 <link href="doxygen.css" rel="stylesheet" type="text/css" />
13 <link href="doxygen-extra.css" rel="stylesheet" type="text/css"/>
16 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
18 <table cellspacing="0" cellpadding="0">
20 <tr style="height: 56px;">
21 <td id="projectalign" style="padding-left: 0.5em;">
22 <div id="projectname">libsigc++
23  <span id="projectnumber">2.10.8</span>
30 <!-- end header part -->
31 <!-- Generated by Doxygen 1.9.1 -->
32 <script type="text/javascript" src="menudata.js"></script>
33 <script type="text/javascript" src="menu.js"></script>
34 <script type="text/javascript">
35 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
37 initMenu('',false,false,'search.php','Search');
39 /* @license-end */</script>
40 <div id="main-nav"></div>
41 <div id="nav-path" class="navpath">
43 <li class="navelem"><a class="el" href="namespacesigc.html">sigc</a></li><li class="navelem"><a class="el" href="structsigc_1_1deduce__result__type.html">deduce_result_type</a></li> </ul>
48 <a href="#pub-types">Public Types</a> |
49 <a href="#pub-static-methods">Static Public Member Functions</a> |
50 <a href="structsigc_1_1deduce__result__type-members.html">List of all members</a> </div>
51 <div class="headertitle">
52 <div class="title">sigc::deduce_result_type< T_functor, T_args > Struct Template Reference<div class="ingroups"><a class="el" href="group__adaptors.html">Adaptors</a></div></div> </div>
54 <div class="contents">
56 <p>Deduce the return type of a functor.
57 <a href="structsigc_1_1deduce__result__type.html#details">More...</a></p>
59 <p><code>#include <sigc++/adaptors/deduce_result_type.h></code></p>
60 <table class="memberdecls">
61 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
62 Public Types</h2></td></tr>
63 <tr class="memitem:a529a6b7809ea3ad1a2d4392b9ffcec42"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="structsigc_1_1deduce__result__type.html#a529a6b7809ea3ad1a2d4392b9ffcec42">type</a> = decltype(<a class="el" href="structsigc_1_1deduce__result__type.html#a46816d343f0924170208d220b7e599f4">test</a>< T_functor >())</td></tr>
64 <tr class="separator:a529a6b7809ea3ad1a2d4392b9ffcec42"><td class="memSeparator" colspan="2"> </td></tr>
65 </table><table class="memberdecls">
66 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
67 Static Public Member Functions</h2></td></tr>
68 <tr class="memitem:a46816d343f0924170208d220b7e599f4"><td class="memTemplParams" colspan="2">template<class U_functor , typename = typename std::is_base_of<adaptor_base, T_functor>::type> </td></tr>
69 <tr class="memitem:a46816d343f0924170208d220b7e599f4"><td class="memTemplItemLeft" align="right" valign="top">static U_functor::template <a class="el" href="structsigc_1_1deduce__result__type.html">deduce_result_type</a>< T_args... >::<a class="el" href="structsigc_1_1deduce__result__type.html#a529a6b7809ea3ad1a2d4392b9ffcec42">type</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structsigc_1_1deduce__result__type.html#a46816d343f0924170208d220b7e599f4">test</a> ()</td></tr>
70 <tr class="separator:a46816d343f0924170208d220b7e599f4"><td class="memSeparator" colspan="2"> </td></tr>
71 <tr class="memitem:ab9356fdb52cf08ca8eded48bae5e5bdb"><td class="memTemplParams" colspan="2">template<class U_functor > </td></tr>
72 <tr class="memitem:ab9356fdb52cf08ca8eded48bae5e5bdb"><td class="memTemplItemLeft" align="right" valign="top">static <a class="el" href="structsigc_1_1functor__trait.html">functor_trait</a>< T_functor >::result_type </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structsigc_1_1deduce__result__type.html#ab9356fdb52cf08ca8eded48bae5e5bdb">test</a> ()</td></tr>
73 <tr class="separator:ab9356fdb52cf08ca8eded48bae5e5bdb"><td class="memSeparator" colspan="2"> </td></tr>
75 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
76 <div class="textblock"><h3>template<class T_functor, class... T_args><br />
77 struct sigc::deduce_result_type< T_functor, T_args ></h3>
79 <p>Deduce the return type of a functor. </p>
80 <p><code>typename <a class="el" href="structsigc_1_1deduce__result__type.html#a529a6b7809ea3ad1a2d4392b9ffcec42">deduce_result_type<functor_type, list of arg_types>::type</a></code> deduces a functor's result type if <code>functor_type</code> inherits from <a class="el" href="structsigc_1_1functor__base.html" title="A hint to the compiler.">sigc::functor_base</a> and defines <code>result_type</code> or if <code>functor_type</code> is actually a (member) function type. Multi-type functors are not supported.</p>
81 <p>sigc++ adaptors use <code>typename <a class="el" href="structsigc_1_1deduce__result__type.html#a529a6b7809ea3ad1a2d4392b9ffcec42">deduce_result_type<functor_type, list of arg_types>::type</a></code> to determine the return type of their <code>templated operator()</code> overloads.</p>
82 <p>Adaptors in turn define a nested template class <code><a class="el" href="structsigc_1_1deduce__result__type.html" title="Deduce the return type of a functor.">deduce_result_type</a></code> that is used by template specializations of the global <a class="el" href="structsigc_1_1deduce__result__type.html" title="Deduce the return type of a functor.">deduce_result_type</a> template to correctly deduce the return types of the adaptor's suitable <code>template operator()</code> overload. </p>
83 </div><h2 class="groupheader">Member Typedef Documentation</h2>
84 <a id="a529a6b7809ea3ad1a2d4392b9ffcec42"></a>
85 <h2 class="memtitle"><span class="permalink"><a href="#a529a6b7809ea3ad1a2d4392b9ffcec42">◆ </a></span>type</h2>
88 <div class="memproto">
89 <div class="memtemplate">
90 template <class T_functor , class... T_args> </div>
91 <table class="memname">
93 <td class="memname">using <a class="el" href="structsigc_1_1deduce__result__type.html">sigc::deduce_result_type</a>< T_functor, T_args >::<a class="el" href="structsigc_1_1deduce__result__type.html#a529a6b7809ea3ad1a2d4392b9ffcec42">type</a> = decltype (<a class="el" href="structsigc_1_1deduce__result__type.html#a46816d343f0924170208d220b7e599f4">test</a><T_functor> ())</td>
96 </div><div class="memdoc">
100 <h2 class="groupheader">Member Function Documentation</h2>
101 <a id="a46816d343f0924170208d220b7e599f4"></a>
102 <h2 class="memtitle"><span class="permalink"><a href="#a46816d343f0924170208d220b7e599f4">◆ </a></span>test() <span class="overload">[1/2]</span></h2>
104 <div class="memitem">
105 <div class="memproto">
106 <div class="memtemplate">
107 template <class T_functor , class... T_args> </div>
108 <div class="memtemplate">
109 template <class U_functor , typename = typename std::is_base_of<adaptor_base, T_functor>::type> </div>
110 <table class="mlabels">
112 <td class="mlabels-left">
113 <table class="memname">
115 <td class="memname">static U_functor::template <a class="el" href="structsigc_1_1deduce__result__type.html">deduce_result_type</a><T_args...>::<a class="el" href="structsigc_1_1deduce__result__type.html#a529a6b7809ea3ad1a2d4392b9ffcec42">type</a> <a class="el" href="structsigc_1_1deduce__result__type.html">sigc::deduce_result_type</a>< T_functor, T_args >::test </td>
117 <td class="paramname"></td><td>)</td>
122 <td class="mlabels-right">
123 <span class="mlabels"><span class="mlabel">static</span></span> </td>
126 </div><div class="memdoc">
130 <a id="ab9356fdb52cf08ca8eded48bae5e5bdb"></a>
131 <h2 class="memtitle"><span class="permalink"><a href="#ab9356fdb52cf08ca8eded48bae5e5bdb">◆ </a></span>test() <span class="overload">[2/2]</span></h2>
133 <div class="memitem">
134 <div class="memproto">
135 <div class="memtemplate">
136 template <class T_functor , class... T_args> </div>
137 <div class="memtemplate">
138 template <class U_functor > </div>
139 <table class="mlabels">
141 <td class="mlabels-left">
142 <table class="memname">
144 <td class="memname">static <a class="el" href="structsigc_1_1functor__trait.html">functor_trait</a><T_functor>::result_type <a class="el" href="structsigc_1_1deduce__result__type.html">sigc::deduce_result_type</a>< T_functor, T_args >::test </td>
146 <td class="paramname"></td><td>)</td>
151 <td class="mlabels-right">
152 <span class="mlabels"><span class="mlabel">static</span></span> </td>
155 </div><div class="memdoc">
159 </div><!-- contents -->
160 <!-- start footer part -->
161 <hr class="footer"/><address class="footer"><small>
162 Generated on Fri Feb 11 2022 15:40:58 for libsigc++ by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1