thrust::logical_not

Defined in thrust/functional.h

template<typename T = void>
struct logical_not : public cuda::std::logical_not<void>

logical_not is a function object. Specifically, it is an Adaptable Predicate, which means it is a function object that tests the truth or falsehood of some condition. If f is an object of class logical_not<T> and x is an object of class T (where T is convertible to bool) then f(x) returns true if and only if x is false.

The following code snippet demonstrates how to use logical_not to transform a device_vector of bools into its logical complement.

#include <thrust/device_vector.h>
#include <thrust/transform.h>
#include <thrust/functional.h>
...
thrust::device_vector<bool> V;
...
thrust::transform(V.begin(), V.end(), V.begin(), thrust::logical_not<bool>());
// The elements of V are now the logical complement of what they were prior

See also

unary_function

Template Parameters

T – must be convertible to bool.

Public Types

using first_argument_type = T
using second_argument_type = T
using result_type = T