On Mon, Jan 14, 2013 at 1:01 PM, David Irvine <span dir="ltr"><<a href="mailto:david.irvine@maidsafe.net" target="_blank">david.irvine@maidsafe.net</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><div>Please see this stackoverflow question for an overview. <a href="http://stackoverflow.com/questions/14188535/clang-access-modifier-order-and-decltype" target="_blank">http://stackoverflow.com/questions/14188535/clang-access-modifier-order-and-decltype</a></div>
<div><br></div><div>The issue seems to be that the private members are not visible at compilation to the decltype call. This is a minimum example (from the question). (I am the questioner in this case). This also seems to appear as a 'bug' in gcc but not msvc (12). I am not 100% convinced but cannot find in the standard why this will not work. I hope this helps. </div>
<div><br></div><div><pre style="max-height:600px;width:auto;background-color:rgb(238,238,238);margin-bottom:10px;padding:5px;vertical-align:baseline;line-height:18px;font-size:14px;overflow:auto;font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;margin-top:0px;border:0px">
<code style="margin:0px;padding:0px;border:0px;vertical-align:baseline;font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif"><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:gray">#include</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(128,0,0)"><future></span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:gray">#include</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(128,0,0)"><iostream></span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:gray">#include</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(128,0,0)"><thread></span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:gray">#include</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(128,0,0)"><vector></span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(0,0,139)">template</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"><</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(0,0,139)">class</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> T</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">></span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> T </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">&</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(0,0,139)">self</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">(</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">T </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">&</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">t</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">)</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">{</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(0,0,139)">return</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> t</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">;</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">}</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(0,0,139)">template</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"><</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(0,0,139)">typename</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> T</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">></span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(0,0,139)">struct</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(43,145,175)">Dependent</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">{</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">};</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(0,0,139)">template</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"><</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(0,0,139)">typename</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> T</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">></span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(0,0,139)">class</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(43,145,175)">Synchronised</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">:</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(43,145,175)">Dependent</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"><</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">T</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">>{</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(0,0,139)">public</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">:</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(0,0,139)">explicit</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(43,145,175)">Synchronised</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">(</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">T t </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">=</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> T</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">())</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">:</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> t_</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">(</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">t</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">)</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">{}</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(0,0,139)">template</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"><</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(0,0,139)">typename</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(43,145,175)">Functor</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">></span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(0,0,139)">auto</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(0,0,139)">operator</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">()(</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(43,145,175)">Functor</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> functor</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">)</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(0,0,139)">const</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">-></span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(0,0,139)">decltype</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">(</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">functor</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">(</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(0,0,139)">self</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">(*</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(0,0,139)">this</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">).</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">t_</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">))</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">{</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:gray">//auto operator()(Functor functor) const ->decltype(functor(this->t_)) {</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
std</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">::</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">lock_guard</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"><</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">std</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">::</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">mutex</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">></span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(0,0,139)">lock</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">(</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">mutex_</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">);</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(0,0,139)">return</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> functor</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">(</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">t_</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">);</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">}</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(0,0,139)">private</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">:</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(0,0,139)">mutable</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> T t_</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">;</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(0,0,139)">mutable</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> std</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">::</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">mutex mutex_</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">;</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">};</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(0,0,139)">int</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> main</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">()</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">{</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(43,145,175)">Synchronised</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"><</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">std</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">::</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(0,0,139)">string</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">></span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> sync_string</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">(</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(128,0,0)">"Start\n"</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">);</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
std</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">::</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">vector</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"><</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">std</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">::</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">future</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(128,0,0)"><void></span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">></span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> futures</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">;</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">}</span></code></pre></div><br clear="all"><div>Best Regards<br>David Irvine<br><br><a href="http://maidsafe.net" target="_blank"><span><font color="#888888"><br>
</font></span></a><font color="#888888"><a href="http://maidsafe.net/" target="_blank">maidsafe.net</a> Limited is a
limited liability company incorporated in Scotland with number SC297540. VAT Registered 889
0608 77.
Registered Office: 72 Templehill, Troon, KA10 6BE. <br>
Telephone Scotland: <a value="+441292750020">+44 1292 750020</a>.</font><br><br></div>
</div>
<br>_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
<br></blockquote></div><div><br></div><div>The instantiation of the template looks like this:</div><br><div><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline;color:rgb(0,0,139)">template</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline"><</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">></span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">
</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline;color:rgb(0,0,139)">class</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline"> </span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline;color:rgb(43,145,175)">Synchronised<std::string></span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline"> </span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">:</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline"> </span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline;color:rgb(43,145,175)">Dependent</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline"><std::string</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">> {</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">
</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline;color:rgb(0,0,139)">public</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">:</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">
</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline;color:rgb(0,0,139)">explicit</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline"> </span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline;color:rgb(43,145,175)">Synchronised</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">(std::string</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline"> t </span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">=</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline"> std::string(</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">))</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline"> </span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">:</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline"> t_</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">(</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">t</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">)</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline"> </span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">{}</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">
</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline;color:rgb(0,0,139)">template</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline"><</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline;color:rgb(0,0,139)">typename</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline"> </span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline;color:rgb(43,145,175)">Functor</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">></span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">
</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline;color:rgb(0,0,139)">auto</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline"> </span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline;color:rgb(0,0,139)">operator</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">()(</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline;color:rgb(43,145,175)">Functor</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline"> functor</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">)</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline"> </span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline;color:rgb(0,0,139)">const</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline"> </span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">-></span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline;color:rgb(0,0,139)">decltype</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">(</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">functor</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">(</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline;color:rgb(0,0,139)">self</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">(*</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline;color:rgb(0,0,139)">this</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">).</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">t_</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">))</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline"> </span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">{</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">
</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline"> std</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">::</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">lock_guard</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline"><</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">std</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">::</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">mutex</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">></span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline"> </span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline;color:rgb(0,0,139)">lock</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">(</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">mutex_</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">);</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">
</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline;color:rgb(0,0,139)">return</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline"> functor</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">(</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">t_</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">);</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">
</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">}</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">
</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline;color:rgb(0,0,139)">private</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">:</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">
</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline;color:rgb(0,0,139)">mutable</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline"> std::string t_</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">;</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">
</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline;color:rgb(0,0,139)">mutable</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline"> std</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">::</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">mutex mutex_</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">;</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">
</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">};</span><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline">
</span></div><div><span style="font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;font-size:14px;line-height:18px;white-space:pre;margin:0px;padding:0px;border:0px;vertical-align:baseline"><br>
</span></div><div>This is ill-formed, since t_ has not yet been declared when the trailing-return-type for operator() is processed. Per [basic.lookup.classref]p2, the name t_ is looked up in the scope of class Synchronized<std::string>. Per [basic.scope.class]p1, the name is not in scope in the trailing-return-type, because it is not in the declarative region following the name's point of declaration, and isn't a function body, default argument, nor non-static data member initializer.</div>