1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2<html> 3<head> 4<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 5<title>Class scoped_connection</title> 6<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css"> 7<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> 8<link rel="home" href="../../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset"> 9<link rel="up" href="../../signals2/reference.html#header.boost.signals2.connection_hpp" title="Header <boost/signals2/connection.hpp>"> 10<link rel="prev" href="connection.html" title="Class connection"> 11<link rel="next" href="deconstruct.html" title="Function deconstruct"> 12</head> 13<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> 14<table cellpadding="2" width="100%"><tr> 15<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td> 16<td align="center"><a href="../../../../index.html">Home</a></td> 17<td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td> 18<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> 19<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> 20<td align="center"><a href="../../../../more/index.htm">More</a></td> 21</tr></table> 22<hr> 23<div class="spirit-nav"> 24<a accesskey="p" href="connection.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../signals2/reference.html#header.boost.signals2.connection_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="deconstruct.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a> 25</div> 26<div class="refentry"> 27<a name="boost.signals2.scoped_connection"></a><div class="titlepage"></div> 28<div class="refnamediv"> 29<h2><span class="refentrytitle">Class scoped_connection</span></h2> 30<p>boost::signals2::scoped_connection — Limits a signal-slot connection lifetime to a particular scope.</p> 31</div> 32<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2> 33<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../signals2/reference.html#header.boost.signals2.connection_hpp" title="Header <boost/signals2/connection.hpp>">boost/signals2/connection.hpp</a>> 34 35</span> 36<span class="keyword">class</span> <a class="link" href="scoped_connection.html" title="Class scoped_connection">scoped_connection</a> <span class="special">:</span> <span class="keyword">public</span> <a class="link" href="connection.html" title="Class connection">connection</a> <span class="special">{</span> 37<span class="keyword">public</span><span class="special">:</span> 38 <span class="comment">// <a class="link" href="scoped_connection.html#id-1_3_36_6_2_1_1_2_3-bbconstruct-copy-destruct">construct/copy/destruct</a></span> 39 <a class="link" href="scoped_connection.html#id-1_3_36_6_2_1_1_2_3_1-bb"><span class="identifier">scoped_connection</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span> 40 <a class="link" href="scoped_connection.html#id-1_3_36_6_2_1_1_2_3_2-bb"><span class="identifier">scoped_connection</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="connection.html" title="Class connection">connection</a><span class="special">&</span><span class="special">)</span><span class="special">;</span> 41 <a class="link" href="scoped_connection.html#id-1_3_36_6_2_1_1_2_3_3-bb"><span class="identifier">scoped_connection</span></a><span class="special">(</span><a class="link" href="scoped_connection.html" title="Class scoped_connection">scoped_connection</a><span class="special">&&</span><span class="special">)</span><span class="special">;</span> 42 <a class="link" href="scoped_connection.html#id-1_3_36_6_2_1_1_2_3_4-bb"><span class="identifier">scoped_connection</span></a><span class="special">(</span><a class="link" href="connection.html" title="Class connection">connection</a><span class="special">&&</span><span class="special">)</span><span class="special">;</span> 43 scoped_connection& <a class="link" href="scoped_connection.html#id-1_3_36_6_2_1_1_2_3_5-bb"><span class="keyword">operator</span><span class="special">=</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="connection.html" title="Class connection">connection</a><span class="special">&</span><span class="special">)</span><span class="special">;</span> 44 scoped_connection& <a class="link" href="scoped_connection.html#id-1_3_36_6_2_1_1_2_3_6-bb"><span class="keyword">operator</span><span class="special">=</span></a><span class="special">(</span><a class="link" href="scoped_connection.html" title="Class scoped_connection">scoped_connection</a><span class="special">&&</span><span class="special">)</span><span class="special">;</span> 45 scoped_connection& <a class="link" href="scoped_connection.html#id-1_3_36_6_2_1_1_2_3_7-bb"><span class="keyword">operator</span><span class="special">=</span></a><span class="special">(</span><a class="link" href="connection.html" title="Class connection">connection</a><span class="special">&&</span><span class="special">)</span><span class="special">;</span> 46 <a class="link" href="scoped_connection.html#id-1_3_36_6_2_1_1_2_3_8-bb"><span class="special">~</span><span class="identifier">scoped_connection</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span> 47 48 <span class="comment">// <a class="link" href="scoped_connection.html#id-1_3_36_6_2_1_1_2_3_9-bb">public methods</a></span> 49 <a class="link" href="connection.html" title="Class connection">connection</a> <a class="link" href="scoped_connection.html#id-1_3_36_6_2_1_1_2_3_9_1-bb"><span class="identifier">release</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span> 50<span class="keyword">private</span><span class="special">:</span> 51 <span class="comment">// <a class="link" href="scoped_connection.html#id-1_3_36_6_2_1_1_2_4-bbconstruct-copy-destruct">construct/copy/destruct</a></span> 52 <a class="link" href="scoped_connection.html#id-1_3_36_6_2_1_1_2_4_1-bb"><span class="identifier">scoped_connection</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="scoped_connection.html" title="Class scoped_connection">scoped_connection</a><span class="special">&</span><span class="special">)</span><span class="special">;</span> 53 scoped_connection& <a class="link" href="scoped_connection.html#id-1_3_36_6_2_1_1_2_4_2-bb"><span class="keyword">operator</span><span class="special">=</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="scoped_connection.html" title="Class scoped_connection">scoped_connection</a><span class="special">&</span><span class="special">)</span><span class="special">;</span> 54<span class="special">}</span><span class="special">;</span></pre></div> 55<div class="refsect1"> 56<a name="id-1.3.36.6.3.4.4"></a><h2>Description</h2> 57<p>A <a class="link" href="connection.html" title="Class connection">connection</a> which automatically disconnects on destruction.</p> 58<div class="section"> 59<div class="titlepage"><div><div><h6 class="title"> 60<a name="id-1.3.36.6.3.4.4.3"></a>Thread Safety</h6></div></div></div> 61<p>The methods of the <code class="computeroutput">scoped_connection</code> class (including those 62 inherited from its base <code class="computeroutput">connection</code> class) are thread-safe with the exception 63 of <a class="link" href="connection.html#id-1_3_36_6_2_1_1_1_10_1-bb">signals2::connection::swap</a>, <a class="link" href="scoped_connection.html#id-1_3_36_6_2_1_1_2_3_9_1-bb">release</a>, and 64 the assignment operator. A <code class="computeroutput">scoped_connection</code> object 65 should not be accessed concurrently when any of these operations is in progress. 66 However, it is always safe to access a different <code class="computeroutput">connection</code> object 67 in another thread, even if it references the same underlying signal-slot connection. 68 </p> 69</div> 70<div class="refsect2"> 71<a name="id-1.3.36.6.3.4.4.4"></a><h3> 72<a name="id-1_3_36_6_2_1_1_2_3-bbconstruct-copy-destruct"></a><code class="computeroutput">scoped_connection</code> public construct/copy/destruct</h3> 73<div class="orderedlist"><ol class="orderedlist" type="1"> 74<li class="listitem"> 75<pre class="literallayout"><a name="id-1_3_36_6_2_1_1_2_3_1-bb"></a><span class="identifier">scoped_connection</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre> 76<p>Default constructs an empty scoped_connection.</p> 77<div class="variablelist"><table border="0" class="variablelist compact"> 78<colgroup> 79<col align="left" valign="top"> 80<col> 81</colgroup> 82<tbody> 83<tr> 84<td><p><span class="term">Postconditions:</span></p></td> 85<td><p><code class="computeroutput"><a class="link" href="connection.html#id-1_3_36_6_2_1_1_1_8_2-bb">connected</a>() == false </code></p></td> 86</tr> 87<tr> 88<td><p><span class="term">Throws:</span></p></td> 89<td><p>Will not throw.</p></td> 90</tr> 91</tbody> 92</table></div> 93</li> 94<li class="listitem"> 95<pre class="literallayout"><a name="id-1_3_36_6_2_1_1_2_3_2-bb"></a><span class="identifier">scoped_connection</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="connection.html" title="Class connection">connection</a><span class="special">&</span> other<span class="special">)</span><span class="special">;</span></pre> 96<div class="variablelist"><table border="0" class="variablelist compact"> 97<colgroup> 98<col align="left" valign="top"> 99<col> 100</colgroup> 101<tbody> 102<tr> 103<td><p><span class="term">Effects:</span></p></td> 104<td><p><code class="computeroutput">this</code> references 105 the connection referenced by 106 <code class="computeroutput">other</code>.</p></td> 107</tr> 108<tr> 109<td><p><span class="term">Postconditions:</span></p></td> 110<td><p><code class="computeroutput"><a class="link" href="connection.html#id-1_3_36_6_2_1_1_1_8_2-bb">connected</a>() == other.connected()</code></p></td> 111</tr> 112<tr> 113<td><p><span class="term">Throws:</span></p></td> 114<td><p>Will not throw.</p></td> 115</tr> 116</tbody> 117</table></div> 118</li> 119<li class="listitem"> 120<pre class="literallayout"><a name="id-1_3_36_6_2_1_1_2_3_3-bb"></a><span class="identifier">scoped_connection</span><span class="special">(</span><a class="link" href="scoped_connection.html" title="Class scoped_connection">scoped_connection</a><span class="special">&&</span> other<span class="special">)</span><span class="special">;</span></pre> 121<p>Move constructor.</p> 122<div class="variablelist"><table border="0" class="variablelist compact"> 123<colgroup> 124<col align="left" valign="top"> 125<col> 126</colgroup> 127<tbody> 128<tr> 129<td><p><span class="term">Effects:</span></p></td> 130<td><p><code class="computeroutput">this</code> references 131 the connection formerly referenced by 132 <code class="computeroutput">other</code>. The moved-from <code class="computeroutput">other</code> 133 no longer references any connection.</p></td> 134</tr> 135<tr> 136<td><p><span class="term">Throws:</span></p></td> 137<td><p>Will not throw.</p></td> 138</tr> 139</tbody> 140</table></div> 141</li> 142<li class="listitem"> 143<pre class="literallayout"><a name="id-1_3_36_6_2_1_1_2_3_4-bb"></a><span class="identifier">scoped_connection</span><span class="special">(</span><a class="link" href="connection.html" title="Class connection">connection</a><span class="special">&&</span> other<span class="special">)</span><span class="special">;</span></pre> 144<p>Move constructor.</p> 145<div class="variablelist"><table border="0" class="variablelist compact"> 146<colgroup> 147<col align="left" valign="top"> 148<col> 149</colgroup> 150<tbody> 151<tr> 152<td><p><span class="term">Effects:</span></p></td> 153<td><p><code class="computeroutput">this</code> references 154 the connection formerly referenced by 155 <code class="computeroutput">other</code>. The moved-from <code class="computeroutput">other</code> 156 no longer references any connection.</p></td> 157</tr> 158<tr> 159<td><p><span class="term">Throws:</span></p></td> 160<td><p>Will not throw.</p></td> 161</tr> 162</tbody> 163</table></div> 164</li> 165<li class="listitem"> 166<pre class="literallayout">scoped_connection& <a name="id-1_3_36_6_2_1_1_2_3_5-bb"></a><span class="keyword">operator</span><span class="special">=</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="connection.html" title="Class connection">connection</a><span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span></pre> 167<p>Copy assignment from unscoped connection.</p> 168<div class="variablelist"><table border="0" class="variablelist compact"> 169<colgroup> 170<col align="left" valign="top"> 171<col> 172</colgroup> 173<tbody> 174<tr> 175<td><p><span class="term">Effects:</span></p></td> 176<td><p><code class="computeroutput">this</code> references 177 the connection referenced by 178 <code class="computeroutput">rhs</code>. If <code class="computeroutput">this</code> already references another 179 connection, the old connection will be disconnected first.</p></td> 180</tr> 181<tr> 182<td><p><span class="term">Postconditions:</span></p></td> 183<td><p><code class="computeroutput"><a class="link" href="connection.html#id-1_3_36_6_2_1_1_1_8_2-bb">connected</a>() == other.connected()</code></p></td> 184</tr> 185<tr> 186<td><p><span class="term">Throws:</span></p></td> 187<td><p>Will not throw.</p></td> 188</tr> 189</tbody> 190</table></div> 191</li> 192<li class="listitem"> 193<pre class="literallayout">scoped_connection& <a name="id-1_3_36_6_2_1_1_2_3_6-bb"></a><span class="keyword">operator</span><span class="special">=</span><span class="special">(</span><a class="link" href="scoped_connection.html" title="Class scoped_connection">scoped_connection</a><span class="special">&&</span> rhs<span class="special">)</span><span class="special">;</span></pre> 194<p>Move assignment.</p> 195<div class="variablelist"><table border="0" class="variablelist compact"> 196<colgroup> 197<col align="left" valign="top"> 198<col> 199</colgroup> 200<tbody> 201<tr> 202<td><p><span class="term">Effects:</span></p></td> 203<td><p><code class="computeroutput">this</code> references 204 the connection formerly referenced by 205 <code class="computeroutput">rhs</code>. The moved-from <code class="computeroutput">rhs</code> 206 no longer references any connection. If <code class="computeroutput">this</code> already references another 207 connection, the old connection will be disconnected first.</p></td> 208</tr> 209<tr> 210<td><p><span class="term">Throws:</span></p></td> 211<td><p>Will not throw.</p></td> 212</tr> 213</tbody> 214</table></div> 215</li> 216<li class="listitem"> 217<pre class="literallayout">scoped_connection& <a name="id-1_3_36_6_2_1_1_2_3_7-bb"></a><span class="keyword">operator</span><span class="special">=</span><span class="special">(</span><a class="link" href="connection.html" title="Class connection">connection</a><span class="special">&&</span> rhs<span class="special">)</span><span class="special">;</span></pre> 218<p>Move assignment.</p> 219<div class="variablelist"><table border="0" class="variablelist compact"> 220<colgroup> 221<col align="left" valign="top"> 222<col> 223</colgroup> 224<tbody> 225<tr> 226<td><p><span class="term">Effects:</span></p></td> 227<td><p><code class="computeroutput">this</code> references 228 the connection formerly referenced by 229 <code class="computeroutput">rhs</code>. The moved-from <code class="computeroutput">rhs</code> 230 no longer references any connection. If <code class="computeroutput">this</code> already references another 231 connection, the old connection will be disconnected first.</p></td> 232</tr> 233<tr> 234<td><p><span class="term">Throws:</span></p></td> 235<td><p>Will not throw.</p></td> 236</tr> 237</tbody> 238</table></div> 239</li> 240<li class="listitem"> 241<pre class="literallayout"><a name="id-1_3_36_6_2_1_1_2_3_8-bb"></a><span class="special">~</span><span class="identifier">scoped_connection</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre> 242<div class="variablelist"><table border="0" class="variablelist compact"> 243<colgroup> 244<col align="left" valign="top"> 245<col> 246</colgroup> 247<tbody><tr> 248<td><p><span class="term">Effects:</span></p></td> 249<td><p>If 250 <code class="computeroutput">this-><a class="link" href="connection.html#id-1_3_36_6_2_1_1_1_8_2-bb">connected</a>()</code>, 251 disconnects the signal-slot connection.</p></td> 252</tr></tbody> 253</table></div> 254</li> 255</ol></div> 256</div> 257<div class="refsect2"> 258<a name="id-1.3.36.6.3.4.4.5"></a><h3> 259<a name="id-1_3_36_6_2_1_1_2_3_9-bb"></a><code class="computeroutput">scoped_connection</code> public methods</h3> 260<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"> 261<pre class="literallayout"><a class="link" href="connection.html" title="Class connection">connection</a> <a name="id-1_3_36_6_2_1_1_2_3_9_1-bb"></a><span class="identifier">release</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre> 262<div class="variablelist"><table border="0" class="variablelist compact"> 263<colgroup> 264<col align="left" valign="top"> 265<col> 266</colgroup> 267<tbody> 268<tr> 269<td><p><span class="term">Effects:</span></p></td> 270<td><p> 271 Releases the connection so it will not be disconnected by the <code class="computeroutput">scoped_connection</code> 272 when it is destroyed or reassigned. The <code class="computeroutput">scoped_connection</code> is reset to 273 the NULL connection after this call completes. 274 </p></td> 275</tr> 276<tr> 277<td><p><span class="term">Postconditions:</span></p></td> 278<td><p><code class="computeroutput"><a class="link" href="connection.html#id-1_3_36_6_2_1_1_1_8_2-bb">connected</a>() == false</code></p></td> 279</tr> 280<tr> 281<td><p><span class="term">Returns:</span></p></td> 282<td><p>A <a class="link" href="connection.html" title="Class connection">connection</a> object referencing the connection which was 283 released by the <code class="computeroutput">scoped_connection</code>. 284 </p></td> 285</tr> 286</tbody> 287</table></div> 288</li></ol></div> 289</div> 290<div class="refsect2"> 291<a name="id-1.3.36.6.3.4.4.6"></a><h3> 292<a name="id-1_3_36_6_2_1_1_2_4-bbconstruct-copy-destruct"></a><code class="computeroutput">scoped_connection</code> private construct/copy/destruct</h3> 293<div class="orderedlist"><ol class="orderedlist" type="1"> 294<li class="listitem"> 295<pre class="literallayout"><a name="id-1_3_36_6_2_1_1_2_4_1-bb"></a><span class="identifier">scoped_connection</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="scoped_connection.html" title="Class scoped_connection">scoped_connection</a><span class="special">&</span> other<span class="special">)</span><span class="special">;</span></pre> 296<p>The scoped_connection class is not copyable. It may only be copy constructed from an unscoped 297 <code class="computeroutput"><a class="link" href="connection.html" title="Class connection">connection</a></code> object.</p> 298</li> 299<li class="listitem"> 300<pre class="literallayout">scoped_connection& <a name="id-1_3_36_6_2_1_1_2_4_2-bb"></a><span class="keyword">operator</span><span class="special">=</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="scoped_connection.html" title="Class scoped_connection">scoped_connection</a><span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span></pre> 301<p>The scoped_connection class is not copyable. It may only be copy assigned from an unscoped 302 <code class="computeroutput"><a class="link" href="connection.html" title="Class connection">connection</a></code> object.</p> 303</li> 304</ol></div> 305</div> 306</div> 307</div> 308<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> 309<td align="left"></td> 310<td align="right"><div class="copyright-footer">Copyright © 2001-2004 Douglas Gregor<br>Copyright © 2007-2009 Frank Mori Hess<p>Distributed under the Boost 311 Software License, Version 1.0. (See accompanying file 312 <code class="filename">LICENSE_1_0.txt</code> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)</p> 313</div></td> 314</tr></table> 315<hr> 316<div class="spirit-nav"> 317<a accesskey="p" href="connection.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../signals2/reference.html#header.boost.signals2.connection_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="deconstruct.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a> 318</div> 319</body> 320</html> 321