Подтвердить что ты не робот

Что вызывает std:: bad_function_call?

Я видел несколько questions, которые относятся к std::bad_function_call исключение, но Google не смог узнать о том, что вызывает это исключение.

Какое поведение должно вызывать это исключение? Можете ли вы дать мне минимальные примеры, которые также не имеют других семантических проблем?

4b9b3361

Ответ 1

Несомненно, самый простой способ - вызывать пустой std::function.

int main() {
    std::function<int()> intfunc;
    int x = intfunc(); // BAD
}

Ответ 2

"Выполнение вызова функции без вызова цели вызывает исключение типа станд:: bad_function_call "

    std::function<void(int,int)> f;
    f(33,66); // throws std::bad_function_call

Никаких кредитов для меня.... его Николаса Йосуттиса Пандита С++ Standard Lib

Ответ 3

в моем случае проблема была в списке захвата. У меня есть рекурсивная лямбда-функция.

//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 в списке захвата генерирует плохой вызов.