Namespaces
Variants

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

ja.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++20)(C++20)(C++20)    
(C++20)
Swap型操作
(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++23)
恒等関数オブジェクト
(C++20)
透過的な演算子ラッパー
(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++11以降)

*this が呼び出し可能な関数ターゲットを格納しているかどうか、つまり空でないかどうかを確認します。

パラメータ

(なし)

戻り値

true が返されるのは、 * this が呼び出し可能な関数ターゲットを保持している場合であり、 false が返されるのはそれ以外の場合です。

#include <functional>
#include <iostream>
void sampleFunction()
{
    std::cout << "This is the sample function!\n";
}
void checkFunc(std::function<void()> const& func)
{
    // operator boolを使用して呼び出し可能なターゲットが利用可能かどうかを判定
    if (func)  
    {
        std::cout << "Function is not empty! Calling function.\n";
        func();
    }
    else
        std::cout << "Function is empty. Nothing to do.\n";
}
int main()
{
    std::function<void()> f1;
    std::function<void()> f2(sampleFunction);
    std::cout << "f1: ";
    checkFunc(f1);
    std::cout << "f2: ";
    checkFunc(f2);
}

出力:

f1: Function is empty. Nothing to do.
f2: Function is not empty! Calling function.
This is the sample function!

関連項目

std::move_only_functionがターゲットを持つかどうかをチェックする
(std::move_only_functionの公開メンバ関数)