Проблема в том, что std::fill
является функцией шаблона. Шаблонные функции на самом деле не существуют, так сказать, до момента их создания. Вы не можете взять адрес std::fill
, потому что он на самом деле не существует; это просто шаблон для похожих функций, которые используют разные типы. Если вы предоставите параметры шаблона, он будет ссылаться на конкретную реализацию шаблона, и все будет хорошо.
Функция std::fill
имеет два параметра шаблона: ForwardIteratorType , который является типом итератора для контейнера, и DataType , который является типом, который содержит контейнер. Вы должны предоставить оба варианта, чтобы компилятор знал, какой экземпляр шаблона std::fill
вы хотите использовать.
std::vector<int> x(10);
boost::bind(std::fill<std::vector<int>::iterator, int>, x.begin(), x.end(), 1);