std::not1

From cppreference.com
< cpp‎ | utility‎ | functional
 
 
Utilities library
Type support (basic types, RTTI, type traits)
Dynamic memory management
Error handling
Program utilities
Variadic functions
Date and time
Function objects
(C++11)
Relational operators
Optional and any
(C++17)
(C++17)
Pairs and tuples
(C++11)
(C++17)
Swap, forward and move
(C++14)
(C++11)
(C++11)
Type operations
(C++11)
(C++17)
 
Function objects
Function wrappers
(C++11)
(C++11)
(C++17)
Bind
(C++11)
(C++11)
(C++11)
Reference wrappers
(C++11)(C++11)
Operator wrappers
Negators
not1
(deprecated)
(deprecated)
(deprecated)
(deprecated)
Searchers
Old binders and adaptors
(until C++17)
(until C++17)
(until C++17)
(until C++17)
(until C++17)(until C++17)(until C++17)(until C++17)
(until C++17)
(until C++17)(until C++17)(until C++17)(until C++17)
(until C++17)(until C++17)
(until C++17)(until C++17)
 
Defined in header <functional>
template< class Predicate >
std::unary_negate<Predicate> not1(const Predicate& pred);
(until C++14)
template< class Predicate >
constexpr std::unary_negate<Predicate> not1(const Predicate& pred);
(since C++14)
(deprecated in C++17)

not1 is a helper function to create a function object that returns the complement of the unary predicate function passed. The function object created is of type std::unary_negate<Predicate>.

The unary predicate type must define a member type, argument_type, that is convertible to the predicate's parameter type. The unary function objects obtained from std::ref, std::cref, std::negate, std::logical_not, std::mem_fn, std::function, std::hash, or from another call to std::not1 have this type defined, as are function objects derived from the deprecated std::unary_function.

Contents

[edit] Parameters

pred - unary predicate

[edit] Return value

std::not1 returns an object of type std::unary_negate<Predicate>, constructed with pred.

[edit] Exceptions

None.

[edit] Example

#include <algorithm>
#include <numeric>
#include <iterator>
#include <functional>
#include <iostream>
#include <vector>
 
struct LessThan7 : std::unary_function<int, bool>
{
    bool operator()(int i) const { return i < 7; }
};
 
int main()
{
    std::vector<int> v(10);
    std::iota(begin(v), end(v), 0);
 
    std::cout << std::count_if(begin(v), end(v), std::not1(LessThan7())) << "\n";
 
    //same as above, but use a lambda function
    std::function<int(int)> less_than_9 = [](int x){ return x < 9; };
    std::cout << std::count_if(begin(v), end(v), std::not1(less_than_9)) << "\n";
}

Output:

3
1

[edit] See also

(C++17)
Creates a function object that returns the complement of the result of the function object it holds
(function template)
(deprecated)
wrapper function object returning the complement of the unary predicate it holds
(class template)
(C++11)
wraps callable object of any type with specified function call signature
(class template)
(deprecated)
constructs custom std::binary_negate object
(function template)
(until C++17)
creates an adaptor-compatible function object wrapper from a pointer to function
(function template)
(until C++17)
adaptor-compatible unary function base class
(class template)