Я не уверен, что вы хотите сделать, но действительно ли Boost.Bind перегружает оператор присваивания? Если вы хотите присвоить значение 1 для a.data, используя возвращенный функциональный объект, я думаю, вам нужно сделать что-то вроде этого (также обратите внимание, что «a» должен быть связан ссылкой):
#include <boost/bind.hpp>
#include <boost/ref.hpp>
#include <cassert>
void foo()
{
A a;
boost::bind(&A::data, _1)(boost::ref(a), 1);
assert(a.data == 1);
}
Если вам нужно использовать оператор присваивания, я думаю, что использование Boost.Lambda или Boost.Phoenix было бы лучшим выбором.