Ответ 1
Несомненно, самый простой способ - вызывать пустой std::function
.
int main() {
std::function<int()> intfunc;
int x = intfunc(); // BAD
}
Я видел несколько questions, которые относятся к std::bad_function_call
исключение, но Google не смог узнать о том, что вызывает это исключение.
Какое поведение должно вызывать это исключение? Можете ли вы дать мне минимальные примеры, которые также не имеют других семантических проблем?
Несомненно, самый простой способ - вызывать пустой std::function
.
int main() {
std::function<int()> intfunc;
int x = intfunc(); // BAD
}
"Выполнение вызова функции без вызова цели вызывает исключение типа станд:: bad_function_call "
std::function<void(int,int)> f;
f(33,66); // throws std::bad_function_call
Никаких кредитов для меня.... его Николаса Йосуттиса Пандита С++ Standard Lib
в моем случае проблема была в списке захвата. У меня есть рекурсивная лямбда-функция.
//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)
{
...
}
отсутствует и из f_build в списке захвата генерирует плохой вызов.