◐ Shell
clean mode source ↗

std::function<R(Args...)>::operator bool — cppreference.com

Материал из cppreference.com

<tbody> </tbody>

explicit operator bool() const noexcept;

(начиная с C++11)

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

Параметры

(нет)

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

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

Пример

#include <functional>
#include <iostream>

void sampleFunction()
{
    std::cout << "Это пример функции!\n";
}

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

int main()
{
    std::function<void()> f1;
    std::function<void()> f2( sampleFunction );
    
    std::cout << "f1: ";
    checkFunc( f1 );
    
    std::cout << "f2: ";
    checkFunc( f2 );
}

Вывод:

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

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

проверяет, есть ли у std::move_only_function цель
(public функция-элемент std::move_only_function) [править]