std::bad_function_call
Определён в заголовочном файле <functional> | ||
|---|---|---|
class bad_function_call; |
std::bad_function_call — тип исключения, выбрасываемого std::function::operator(), если у обёртки функции нет целевого объекта.
Диаграмма наследования
Функции-члены
|
(constructor) | создаёт новый объект bad_function_call (открытая функция-член) |
|
operator= | заменяет объект bad_function_call (открытая функция-член) |
|
what | возвращает поясняющую строку (открытая функция-член) |
std::bad_function_call::bad_function_call
bad_function_call() noexcept; | (1) | (начиная с C++11) |
bad_function_call( const bad_function_call& other ) noexcept; | (2) | (начиная с C++11) |
Создаёт новый объект bad_function_call с завершающей нулём строкой байтов, определяемой реализацией и доступной через what().
*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; | (начиная с 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; | (начиная с C++11) |
Возвращает поясняющую строку.
Возвращаемое значение
Указатель на завершающую нулём строку, определяемую реализацией и содержащую поясняющую информацию. Строка подходит для преобразования и отображения в виде std::wstring. Указатель гарантированно остаётся действительным как минимум до уничтожения объекта исключения, из которого он был получен, либо до вызова неконстантной функции-члена (например, оператора присваивания копированием) для объекта исключения.
| При вычислении во время компиляции возвращаемая строка кодируется с использованием обычной кодировки литералов. | (начиная с C++26) |
Примечания
Реализациям разрешено переопределять what(), но это не является обязательным.
Унаследовано от std::exception
Функции-члены
|
[виртуальная] | уничтожает объект исключения (виртуальная открытая функция-член std::exception) |
|
[виртуальная] | возвращает поясняющую строку (виртуальная открытая функция-член 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 | Применён к | Опубликованное поведение | Исправленное поведение |
|---|---|---|---|
| LWG 2233 | C++11 |
what() всегда возвращал ту же поясняющуюстроку, что и std::exception::what() | возвращает собственную поясняющую строку |
См. также
|
(C++11) | копируемая обёртка для любого вызываемого объекта, который можно сконструировать копированием (шаблон класса) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/utility/functional/bad_function_call