Handy macros for callbacks.
Instead of:
std::bind(func_ptr, instnace, std::placeholder::_1)
you use:
CALLBACK_1(func_ptr, instance)
And also removes more warnings from the tests
The code seems to look wrong (and it sure is) however in real-world
applications it might not be that eays to tell who has ownership of the object,
especially if weak references are involved.