Ken*_*oom 32 c++ lambda exception c++11
我已经看到了一些 问题,这指的是std::bad_function_call例外,但一直没能谷歌搜索是什么原因导致这个例外,找出任何.
什么样的行为应该导致这个例外?你能给我一些没有其他语义问题的最小例子吗?
Pup*_*ppy 48
当然 - 最简单的是你试图把它称为std::function空的.
int main() {
std::function<int()> intfunc;
int x = intfunc(); // BAD
}
Run Code Online (Sandbox Code Playgroud)
小智 5
就我而言,问题出在捕获列表中。我有一个递归 lambda 函数。
//decl
std::function<void(const SBone*, const core::vector3df&, const core::quaternion&)> f_build;
f_build = [&f_build](const SBone* bone, const core::vector3df& pos, const core::quaternion& rot)
{
...
}
Run Code Online (Sandbox Code Playgroud)
捕获列表中的 f_build缺失&会生成错误的调用。