<div class="gmail_quote">2009/2/2 Naik, Roshan <span dir="ltr">&lt;<a href="mailto:roshan.naik@hp.com">roshan.naik@hp.com</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">









<div link="blue" vlink="purple" lang="EN-US">

<div>

<p style=""><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">Seems like the following specialization of
impl&lt;&gt; works:</span></p>

<p style=""><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">&nbsp;</span></p>

<p style=""><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">&nbsp;</span></p>

<p style=""><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">&nbsp;&nbsp; <span style="color: blue;">template</span> &lt;<span style="color: blue;">typename</span> r&gt; </span></p>

<p style=""><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">&nbsp;&nbsp; <span style="color: blue;">struct</span> impl&lt;<span style="color: blue;">true</span>, r(<span style="color: blue;">void</span>)&gt; </span></p>


<p style=""><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">&nbsp;&nbsp; { </span></p>

<p style=""><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue;">static</span> <span style="color: blue;">const</span> <span style="color: blue;">bool</span> value = </span></p>


<p style=""><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue;">sizeof</span>( </span></p>

<p style=""><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return_value_check&lt;type,
r&gt;::deduce( (</span></p>

<p style=""><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (((derived_type*)0)-&gt;<span style="color: blue;">operator</span>()(),&nbsp;
details::void_exp_result&lt;type&gt;()) </span></p>

<p style=""><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ) )</span></p>

<p style=""><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ) == <span style="color: blue;">sizeof</span>(yes);
</span></p>

<p style=""><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">&nbsp;</span></p>

<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">&nbsp;&nbsp;
};</span></p></div></div></blockquote></div><br>I don&#39;t think it does. Try this test:<br><br>struct foo {<br>&nbsp;&nbsp; void operator()() const {}<br>};<br><br><br>int main() {<br>&nbsp; is_call_possible&lt;foo, void()&gt;::value;<br>
}<br><br>Roman Perepelitsa.<br>