title: Boost bind return type difference
body: <p>I have looked through the discussion on <a href="https://stackoverflow.com/questions/6412065/what-is-the-return-type-of-boostbind">What is the return type of boost::bind?</a> and see the short answer is that you don't need to know.</p>
  
  <p>While I have a function that taking "bind(...) result" as an argument and I find following difference behaviour</p>
  
  <p>Working case 1</p>
  
  <pre><code>   void func(int a){};
     myfunc(bind(&amp;obj::func,this,_1));
  </code></pre>
  
  <p>Not working case 2 ( when I want to bind the func2 with 2 argument)</p>
  
  <pre><code>   void func2(int a, int b){};
     myfunc(bind(&amp;obj::func2,this,_1,_2));
  </code></pre>
  
  <p>Made it working with case 3</p>
  
  <pre><code>   void func3(int a, int b){};
     myfunc(bind(&amp;obj::func3,this,_1, 10));     
  </code></pre>
  
  <p>So my question is what's the differnt on retrun type of following 3?</p>
  
  <pre><code>bind(&amp;obj::func,this,_1));
  bind(&amp;obj::func2,this,_1,10)); //why this one can be passed the same type as above one?
  bind(&amp;obj::func3,this,_1,_2));
  </code></pre>
  
  <p>As <code>myfunc</code> is a quite embedded in template and overloading functions, I didn't yet find how it is defined to take "bind(...)" as an argument. That's why I didn't attach the code for <code>myfunc</code></p>