como boost :: function e boost :: bind funcionam

Eu não gosto de ter caixas mágicas espalhadas por todo o meu código ... como exatamente essas duas classes funcionam para permitir que basicamente qualquer função seja mapeada para um objeto de função, mesmo se a função <> tiver um parâmetro completamente diferente definido para aquele que...