After upgrading to XCode 5 using std::function with std::bind appears to be generating EXC_BAD_ACCESS exceptions. It looks as if the __base pointer inside the implementation of std::function ends up being null, resulting in the bad access, but I'm not clear on why that would be the case. Does anyone have an insight into either what I'm doing wrong?
Here is sample code that illustrates the problem.
struct A
{
void foo(bool b)
{
std::cout << b << std::endl;
}
void go()
{
// ok
auto a = std::bind(&A::foo, this, std::placeholders::_1);
a(true);
// ok
std::function<void(A*, bool)> b = std::bind(&A::foo, std::placeholders::_1, std::placeholders::_2);
b(this, true);
// ok
std::function<void(A*, bool)> c = std::bind(&A::foo, this, std::placeholders::_2);
c(this, true);
// EXC_BAD_ACCESS
std::function<void(bool)> f = std::bind(&A::foo, this, std::placeholders::_1);
f(true);
}
};
...
...
A a;
a.go();