为什么这段代码会崩溃?
#include <iostream>
#include <functional>
int main(int argc, const char * argv[])
{
std::function<void(int)> function = [](int)
{
};
auto binding = std::bind(function, 10);
std::function<void()> jobFunctor = binding; // crashes here with EXC_BAD_ACCESS
return 0;
}
当将绑定结果转换为jobFunctor
时,在std::function
构造函数中存在无限堆栈递归。
我正在运行Mac OS X 10.8.5,使用libc++和Xcode 5.0.2编译此代码,编译器版本:
LO50F-04-198BX:$ clang++ --version
Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
Target: x86_64-apple-darwin12.5.0
Thread model: posix
bind
行时崩溃。与Piotr相同的编译器,但目标是x86_64-apple-darwin13.0.0。 - blackbird