Основные отличия между классами std::function и std::bind:
- std::function — шаблонный класс стандартной библиотеки, который предоставляет удобную обёртку для простой функции, функтора, метода или лямбда-выражения. 5 С его помощью можно, например, хранить несколько функций, методов, функторов или лямбда-выражений в векторе. 5
- std::bind — шаблонная функция, которая возвращает объект std::function и привязывает к функции набор аргументов. 5 Например, с её помощью можно создать новый объект функции, который принимает только часть аргументов, или изменить порядок аргументов в функции. 2
Таким образом, std::bind позволяет создавать новые объекты функций на лету, а std::function принимает эти временные объекты функций и привязывает их к переменной. 1