Как использовать лямбды вместе с boost.asio?

Как можно заменить все boost::bind на лямбды в коде ниже??? Почему при попытке в функции accept заменить boost::bind на std::bind, компилятор выдает ошибку No matching function for call to 'bind' и как это исправить.

void accept();

void out(char* buff){
    printf("%s\n", buff);
    accept();
}

void read(std::shared_ptr<tcp::socket> session){
    char buff[30000];
    session->async_receive(boost::asio::buffer(buff, 1024), boost::bind(out, buff));
    session->close();
}

void accept(){
    std::shared_ptr<tcp::socket> session(new tcp::socket(context));
    acceptor.async_accept(*session, boost::bind(read, session));
}

int main(){
    std::shared_ptr<int> a(new int(5));


    accept();
    context.run();
    return 0;
}

Ответы (0 шт):