Пространства имён
Варианты
Действия

std::move_only_function::operator bool

Материал из cppreference.com
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм (C++20)
Вариативные функции
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Функциональные объекты
Библиотека форматирования (C++20)
(C++11)
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)    
(C++20)
Операции обмена и типа
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 
Объекты функции
Функции обёртки
(C++11)
(C++11)
Применение частичных функций
(C++20)(C++23)
(C++11)
Вызов функции
(C++17)(C++23)
Объект идентичности функции
(C++20)
Обёртки ссылок
(C++11)(C++11)
Прозрачные обёртки операторов
(C++14)
(C++14)
(C++14)
(C++14)  
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)

Отрицатели
(C++17)
Искатели
Ограниченные компараторы
Старые привязки и адаптеры
(до 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*)
 
 
explicit operator bool() const noexcept;
(начиная с C++23)

Проверяет, хранит ли *this вызываемую цель, т.е. не является ли он пустым.

Содержание

[править] Параметры

(нет)

[править] Возвращаемое значение

true, если *this хранит вызываемую цель, false иначе.

[править] Пример

#include <functional>
#include <iostream>
 
void sampleFunction()
{
    std::cout << "Это пример функции!\n";
}
 
void checkFunc( std::move_only_function<void() const> const &func )
{
    // Использует operator bool, чтобы определить, доступна ли вызываемая цель.
    if( func ) {
        std::cout << "Функция не пустая! Вызов функции.\n";
        func();
    }
    else {
        std::cout << "Функция пуста. Ничего не делать.\n";
    }
}
 
int main()
{
    std::move_only_function<void() const> f1{};
    std::move_only_function<void() const> f2{ sampleFunction };
 
    std::cout << "f1: ";
    checkFunc(f1);
 
    std::cout << "f2: ";
    checkFunc(f2);
}

Вывод:

f1: Функция пуста. Ничего не делать.
f2: Функция не пустая! Вызов функции.
Это пример функции!

[править] Смотрите также

проверяет, содержится ли цель
(public функция-элемент std::function<R(Args...)>) [править]