how boost :: function and boost :: bind work

No me gusta tener cajas mágicas dispersas por todo mi código ... ¿cómo funcionan exactamente estas dos clases para permitir que básicamente cualquier función se asigne a un objeto de función, incluso si la función <> tiene un parámetro completamente diferente al que estoy pasando? aboost::bind

Incluso funciona con diferentes convenciones de llamadas (es decir, los métodos de miembros son__thiscall bajo VC, pero las funciones "normales" son generalmente__cdecl o__stdcall para aquellos que necesitan ser compatibles con C.