I have a set of callables which I'd like to associate to instances of a particular class Node. Each instance of Node needs only hold one callable, and may call it from a member function. Suppose A, B, and C are callables, which may have different function signatures:
Node n1,n2,n3;
n1.associate(A);
n2.associate(B, 42);
n3.associate(C, "foo");
//...
n1.mem_fn(); //will call A at some point inside some_other_fn()
n2.mem_fn(); //will call B, passing 42 as argument
//...
n1.associate(C, "bar");
n1.mem_fn(); //now C will replace A, and be called from n1::mem_fn() with arg "bar"
How can I accomplish this? The return type of the callables may be different.