## logical_and

    Function Object

- Summary
- Data Type and Member Function Indexes
- Synopsis
- Description
- Interface
- Warnings
- See Also

### Summary

A binary function object that returns `true` if both of its arguments are `true`.

### Data Type and Member Function Indexes
(exclusive of constructors and destructors)

None

### Synopsis

    #include <functional>
    template <class T>
    struct logical_and : public binary_function<T, T, bool>;

### Description

logical_and is a binary function object. Its `operator()` returns `true` if both `x` and `y` are `true`. You can pass a logical_and object to any algorithm that requires a binary function. For example, the transform algorithm applies a binary operation to corresponding values in two collections and stores the result of the function. logical_and is used in that algorithm in the following manner:

    vector<bool> vec1;
    vector<bool> vec2;
    vector<bool> vecResult;
    .
    .
    .
    transform(vec1.begin(), vec1.end(),
              vec2.begin(),
              vecResult.begin(), logical_and<bool>());

After this call to transform, `vecResult(n)` contains a `1` (`true`) if both `vec1(n)` and `vec2(n)` are `true` or a `0` (`false`) if either `vec1(n)` or `vec2(n)` is `false`.

### Interface

    template <class T>
    struct logical_and : binary_function<T, T, bool> {
      bool operator() (const T&, const T&) const;
    };

### Warnings

If your compiler does not support default template parameters, you always need to supply the `Allocator` template argument. For instance, you have to write:

`vector<bool, allocator<bool> >`

instead of:

`vector<bool>`

If your compiler does not support namespaces, then you do not need the using declaration for `std`.

### See Also

binary_function, Function Objects

Copyright (c) 1998, Rogue Wave Software, Inc.
Send mail to report errors or comment on the documentation.
OEM Release, June 1998