title: how boost::function and boost::bind work
body: <p>I dislike having magic boxes scattered all over my code...how exactly do these two classes work to allow basically any function to be mapped to a function object even if the function&lt;> has a completely different parameter set to the one im passing to <code>boost::bind</code></p>
  
  <p>It even works with different calling conventions (i.e. member methods are <code>__thiscall</code> under VC, but "normal" functions are generally <code>__cdecl</code> or <code>__stdcall</code> for those that need to be compatible with C.</p>