значит вот такой workaround
#include <boost/bind.hpp>
#include <boost/function.hpp>
#include <iostream>
typedef boost::function< void(int, int) >fn_type;
//
class B
{
fn_type fn_;
public:
B()
{
}
void assign(fn_type fn)
{
fn_ = fn;
}
void ready()
{
fn_(10, 11);
}
};
//
class A
{
B& b_;
public:
A(B& b) : b_(b)
{
b_.assign( boost::bind(&A::foo, this, -1, -1) );
}
void init()
{
b_.ready();
}
void foo(int i, int k)
{
std::cout << "i = " << i << " k = " << k << std::endl;
}
};
int main()
{
B b;
A a(b);
b.ready();
//
return 0;
}
выводит соответственно
-1 -1
а хотелось бы
10, 11
дело все в том что при создании объектов начальные значения
"заначиваются" в одном из промежуточных объектов (смотреть файл bind.hpp)
в таком случае если это поведение что называется by design
то возможно ли это обойти используя тот же boost или нет ?