operator==(std::move_only_function)
ja.cppreference.net より
friend bool operator==( const std::move_only_function& f, std::nullptr_t ) noexcept;
|
(C++23 から) | |
ラッパー f が呼び出し可能なターゲットを持つかどうかを、形式的に std::nullptr_t と比較して確認します。空のラッパー(つまり、ターゲットを持たないラッパー)は等しいと比較され、空でない関数は等しくないと比較されます。
この関数 は通常の 非修飾 または 修飾付き名前探索 では可視ではなく、引数依存の名前探索 によってのみ、std::move_only_function<FunctionType> が引数の関連クラスである場合に発見できます。
!= 演算子は synthesized であり、operator== から生成されます。
パラメータ
| f | - |
std::move_only_function
を比較する
|
戻り値
! f です。
例
このコードを実行
#include <functional> #include <iostream> #include <utility> using SomeVoidFunc = std::move_only_function<void(int) const>; class C { public: C() = default; C(SomeVoidFunc func) : void_func_(std::move(func)) {} void default_func(int i) const { std::cout << i << '\n'; }; void operator()() const { if (void_func_ == nullptr) // nullptrとの特殊化された比較 default_func(7); else void_func_(7); } private: SomeVoidFunc void_func_{}; }; void user_func(int i) { std::cout << (i + 1) << '\n'; } int main() { C c1; C c2(user_func); c1(); c2(); }
出力:
7 8
関連項目
std::move_only_functionがターゲットを持つかどうかをチェックする
(public member function) |
|
|
(removed in C++20)
|
std::function
と
nullptr
を比較する
(function template) |