Namespaces
Variants

std:: bad_function_call

From cppreference.net
Utilities library
Function objects
Function wrappers
(C++11)
(C++11)
bad_function_call
(C++11)
Function invocation
(C++17) (C++23)
Identity function object
(C++20)
Old binders and adaptors
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
( until C++17* ) ( until C++17* )
( until C++17* ) ( until C++17* )

( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
Определено в заголовке <functional>
class bad_function_call ;

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

cpp/error/exception std-bad function call-inheritance.svg

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

Содержание

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

(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)
копируемая обёртка для любого копируемого вызываемого объекта
(шаблон класса)