std::binary_negate - cppreference.com

From cppreference.com

Defined in header

<functional>

template<classPredicate>structbinary_negate:publicstd::binary_function<Predicate::first_argument_type,Predicate::second_argument_type,bool>;(until C++11)template<classPredicate>structbinary_negate;(since C++11)
(deprecated in C++17)
(removed in C++20)std::binary_negate is a wrapper function object returning the complement of the binary predicate it holds.

The binary predicate type must define two member types, first_argument_type and second_argument_type, that are convertible to the predicate's parameter types. The function objects obtained from

std::owner_less

,

std::ref

,

std::cref

,

std::plus

,

std::minus

,

std::multiplies

,

std::divides

,

std::modulus

,

std::equal_to

,

std::not_equal_to

,

std::greater

,

std::less

,

std::greater_equal

,

std::less_equal

,

std::logical_not

,

std::logical_or

,

std::bit_and

,

std::bit_or

, std::bit_xor,

std::mem_fn

,

std::map::value_comp

,

std::multimap::value_comp

,

std::function

, or from a call to

std::not2

have these types defined, as are function objects derived from the deprecated

std::binary_function

.

std::binary_negate objects are easily constructed with helper function

std::not2

.

Member types

Type Definition first_argument_typePredicate::first_argument_typesecond_argument_typePredicate::second_argument_typeresult_typeboolMember functions

(constructor)

constructs a new binary_negate object with the supplied predicate
(public member function)operator()

returns the logical complement of the result of a call to the stored predicate
(public member function)std::binary_negate::binary_negate

explicitbinary_negate(Predicateconst&pred);(constexpr since C++14)Constructs a std::binary_negate function object with the stored predicate pred.

Parameters

pred - predicate function object std::binary_negate::operator()

booloperator()(first_argument_typeconst&x,second_argument_typeconst&y)const;(constexpr since C++14)Returns the logical complement of the result of calling pred(x,y).

Parameters

x - first argument to pass through to predicate y - second argument to pass through to predicate Return value

The logical complement of the result of calling pred(x,y).

Example

Run this code

#include<algorithm>#include<cstddef>#include<functional>#include<iostream>#include<vector>structsame:std::binary_function<int,int,bool>{booloperator()(inta,intb)const{returna==b;}};intmain(){std::vector<int>v1;for(inti=0;i<7;++i)v1.push_back(i);std::vector<int>v2(v1.size());std::reverse_copy(v1.begin(),v1.end(),v2.begin());std::vector<bool>v3(v1.size());std::binary_negate<same>not_same((same()));// C++11 solution:// std::function<bool (int, int)> not_same =// [](int x, int y) -> bool { return !same()(x, y); };std::transform(v1.begin(),v1.end(),v2.begin(),v3.begin(),not_same);std::cout.setf(std::ios_base::boolalpha);for(std::size_ti=0;i!=v1.size();++i)std::cout<<v1[i]<<" != "<<v2[i]<<" : "<<v3[i]<<'\n';}Output:

0 != 6 : true 1 != 5 : true 2 != 4 : true 3 != 3 : false 4 != 2 : true 5 != 1 : true 6 != 0 : true See also

binary_function

(deprecated in C++11)(removed in C++17)

adaptor-compatible binary function base class
(class template)

[edit]

function

(C++11)

copyable wrapper of any copy constructible callable object
(class template)

[edit]

move_only_function

(C++23)

move-only wrapper of any callable object that supports qualifiers in a given call signature
(class template)

[edit]

not2

(deprecated in C++17)(removed in C++20)

constructs custom

std::binary_negate

object
(function template)

[edit]

ptr_fun

(deprecated in C++11)(removed in C++17)

creates an adaptor-compatible function object wrapper from a pointer to function
(function template)

[edit]

unary_negate

(deprecated in C++17)(removed in C++20)

wrapper function object returning the complement of the unary predicate it holds
(class template)

[edit]