Namespaces
Variants

std::bad_function_call

С сайта ru.cppreference.net
 
 
Библиотека утилит
Поддержка языка
Поддержка типов (базовые типы, RTTI)
Макросы проверки библиотечных возможностей (C++20)
Утилиты программ
Функции с переменным числом аргументов
Поддержка корутин (C++20)
Поддержка контрактов (C++26)
Трёхстороннее сравнение
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Общие утилиты
Операторы отношений (устарело в C++20)
 
Функциональные объекты
Вызов функций
(C++17)(C++23)
Функциональный объект тождественности
(C++20)
Старые binder'ы и адапторы
(до C++17*)
(до C++17*)
(до C++17*)
(до C++17*)
(до C++17*)(до C++17*)(до C++17*)(до C++17*)
(до C++20*)
(до C++20*)
(до C++17*)(до C++17*)
(до C++17*)(до C++17*)

(до C++17*)
(до C++17*)(до C++17*)(до C++17*)(до C++17*)
(до C++20*)
(до C++20*)
 
Определён в заголовочном файле <functional>
class bad_function_call;

std::bad_function_call — это тип исключения, которое выбрасывается std::function::operator(), если обёртка функции не имеет цели.

cpp/error/exception

Диаграмма наследования

Функции-члены

(constructor)
создает новый объект bad_function_call
(публичная функция-член)
operator=
заменяет объект bad_function_call
(публичная функция-член)
what
возвращает поясняющую строку
(публичная функция-член)

std::bad_function_call:: bad_function_call

bad_function_call ( ) noexcept ;
(1) (since C++11)
bad_function_call ( const bad_function_call & other ) noexcept ;
(2) (since C++11)

Создает новый объект bad_function_call с определенной реализацией null-терминированной строкой байтов, доступной через what() .

1) Конструктор по умолчанию.
2) Конструктор копирования. Если * this и other оба имеют динамический тип std::bad_function_call , то std:: strcmp ( what ( ) , other. what ( ) ) == 0 .

Параметры

other - другой объект исключения для копирования

std::bad_function_call:: operator=

bad_function_call & operator = ( const bad_function_call & other ) noexcept ;
(since C++11)

Присваивает содержимое из other . Если * this и other оба имеют динамический тип std::bad_function_call , то std:: strcmp ( what ( ) , other. what ( ) ) == 0 после присваивания.

Параметры

other - другой объект исключения для присваивания

Возвращаемое значение

* this

std::bad_function_call:: what

virtual const char * what ( ) const noexcept ;
(since C++11)

Возвращает пояснительную строку.

Возвращаемое значение

Указатель на определенную реализацией нуль-терминированную строку с пояснительной информацией. Строка подходит для преобразования и отображения как std::wstring . Гарантируется, что указатель остается действительным по крайней мере до тех пор, пока не будет уничтожен объект исключения, из которого он получен, или пока не будет вызвана неконстантная функция-член (например, оператор присваивания копированием) для объекта исключения.

Примечания

Реализациям разрешено, но не требуется переопределять what() .

Унаследовано от std:: exception

Функции-члены

уничтожает объект исключения
(виртуальная публичная функция-член std::exception )
[virtual]
возвращает поясняющую строку
(виртуальная публичная функция-член std::exception )

Пример

#include <functional>
#include <iostream>
int main()
{
    std::function<int()> f = nullptr;
    try
    {
        f();
    }
    catch (const std::bad_function_call& e)
    {
        std::cout << e.what() << '\n';
    }
}

Возможный вывод:

bad function call

Отчеты о дефектах

Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Applied to Behavior as published Correct behavior
LWG 2233 C++11 what() всегда возвращал то же самое поясняющее
сообщение, что и std::exception::what()
возвращает собственное
поясняющее сообщение

Смотрите также

(C++11)
копируемая обёртка для любого копируемого вызываемого объекта
(шаблон класса)