<div>Im compiling in an environment which #includes &lt;boost::bind.hpp&gt;, so I can&#39;t get</div><div>away from it! I&#39;d like to use Boost.Lambda sometimes, but run into namespace clashes.</div><div><br></div><div>This code snippet works...</div>

<div><br></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">#include &lt;boost/lambda/lambda.hpp&gt;</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">#include &lt;boost/lambda/bind.hpp&gt;</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">#include &lt;boost/range.hpp&gt;</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">#include &lt;vector&gt;</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">#include &lt;numeric&gt;</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">// and also this...</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">#include &lt;boost/bind.hpp&gt;</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">struct X</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">{</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">�� �int f( ) const { return 1; }</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">};</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">int sum( int a, int b ) { return a + b; }</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">int main( )</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">{</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">�� �boost::lambda::placeholder1_type x;</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">�� �boost::lambda::placeholder2_type y;</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">�� �std::vector&lt;X&gt; v;</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br>

</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">�� �std::accumulate( boost::begin( v ), boost::end( v ), 0, bind( sum, x, bind( &amp;X::f, y ) ) );</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">}</font></div>

<br>
<div>but as soon as I extract the innermost bind into a Boost.Function, I seem to need to fully</div><div>qualify all the binds, ie</div><div><br></div><div><meta http-equiv="content-type" content="text/html; charset=utf-8"><div>

<font class="Apple-style-span" face="&#39;courier new&#39;, monospace">int main( )</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">{</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">�� �boost::lambda::placeholder1_type x;</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">�� �boost::lambda::placeholder2_type y;</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">�� �std::vector&lt;X&gt; v;</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">�� �boost::function&lt;int(int, int)&gt; my_sum = bind( sum, x, y );</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">�� �std::accumulate( boost::begin( v ), boost::end( v ), 0, boost::lambda::bind( my_sum, x, bind( &amp;X::f, y ) ) );</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">}</font></div><br></div><div>Is there any easy way around this? It would be nice to able to name my inner binds in a meaningful way, but all the</div>

<div>explicit qualification gets a bit cumbersome!</div><div><br></div><div>Thx</div><div><br></div><div>- Rob.</div>