「cpp/utility/functional/function/operator cmp」の版間の差分
提供: cppreference.com
< cpp | utility | functional | function
細 (Use {{lc}}. Update links. Various fixes.) |
|||
1行: | 1行: | ||
− | |||
{{title | operator{{==}},!{{=}}<small>(std::function)</small>}} | {{title | operator{{==}},!{{=}}<small>(std::function)</small>}} | ||
{{cpp/utility/functional/function/navbar}} | {{cpp/utility/functional/function/navbar}} | ||
{{dcl begin}} | {{dcl begin}} | ||
− | {{dcl | num=1 | | + | {{dcl | num=1 | |
template< class R, class... ArgTypes > | template< class R, class... ArgTypes > | ||
− | bool operator{{==}}( const function<R(ArgTypes...)>& f, std::nullptr_t ); | + | bool operator{{==}}( const function<R(ArgTypes...)>& f, std::nullptr_t ) ; |
}} | }} | ||
− | {{dcl | num=2 | | + | {{dcl | num=2 | |
template< class R, class... ArgTypes > | template< class R, class... ArgTypes > | ||
− | bool operator{{==}}( std::nullptr_t, const function<R(ArgTypes...)>& f ); | + | bool operator{{==}}( std::nullptr_t, const function<R(ArgTypes...)>& f ) ; |
}} | }} | ||
− | {{dcl | num=3 | | + | {{dcl | num=3 | |
template< class R, class... ArgTypes > | template< class R, class... ArgTypes > | ||
− | bool operator!{{=}}( const function<R(ArgTypes...)>& f, std::nullptr_t ); | + | bool operator!{{=}}( const function<R(ArgTypes...)>& f, std::nullptr_t ) ; |
}} | }} | ||
− | {{dcl | num=4 | | + | {{dcl | num=4 | |
template< class R, class... ArgTypes > | template< class R, class... ArgTypes > | ||
− | bool operator!{{=}}( std::nullptr_t, const function<R(ArgTypes...)>& f ); | + | bool operator!{{=}}( std::nullptr_t, const function<R(ArgTypes...)>& f ) ; |
}} | }} | ||
{{dcl end}} | {{dcl end}} | ||
− | + | {{tt|std::function}} |{{tt|function}}}} | |
− | === | + | ====== |
{{par begin}} | {{par begin}} | ||
− | {{par | f | | + | {{par | f | {{tt|std::function}}}} |
{{par end}} | {{par end}} | ||
− | === | + | ====== |
− | 1-2 | + | 1-2{{c|!f}} |
− | + | 3-4{{c|(bool) f}} | |
− | 3-4 | + | |
===例=== | ===例=== | ||
{{example | {{example | ||
| code= | | code= | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
| output= | | output= | ||
+ | |||
+ | |||
}} | }} | ||
2018年3月21日 (水) 07:09時点における最新版
template< class R, class... ArgTypes > bool operator==( const std::function<R(ArgTypes...)>& f, std::nullptr_t ) noexcept; |
(1) | (C++11以上) |
template< class R, class... ArgTypes > bool operator==( std::nullptr_t, const std::function<R(ArgTypes...)>& f ) noexcept; |
(2) | (C++11以上) |
template< class R, class... ArgTypes > bool operator!=( const std::function<R(ArgTypes...)>& f, std::nullptr_t ) noexcept; |
(3) | (C++11以上) |
template< class R, class... ArgTypes > bool operator!=( std::nullptr_t, const std::function<R(ArgTypes...)>& f ) noexcept; |
(4) | (C++11以上) |
std::function
をNULLポインタと比較します。 空の function
(つまり、 callable なターゲットを持っていない function
) は等しくなります。 空でない function
は等しくなりません。
[編集] 引数
f | - | 比較する std::function
|
[編集] 戻り値
1-2) !f
3-4) (bool) f
[編集] 例
Run this code
#include <functional> #include <iostream> using SomeVoidFunc = std::function<void(int)>; class C { public: C(SomeVoidFunc void_func = nullptr) : void_func_(void_func) { if (void_func_ == nullptr) { // specialized compare with nullptr void_func_ = std::bind(&C::default_func, this, std::placeholders::_1); } void_func_(7); } void default_func(int i) { std::cout << i << '\n'; }; private: SomeVoidFunc void_func_; }; void user_func(int i) { std::cout << (i + 1) << '\n'; } int main() { C c1; C c2(user_func); }
出力:
7 8