logical_and Struct
 Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer

# logical_and Struct

Visual Studio 2008

The struct provides a predefined function object that performs the logical operation of conjunction on elements of a specified value type and tests for the truth or falsity of the result.

```template<class Type>
struct logical_and : public binary_function<Type, Type, bool>
{
bool operator()(
const Type& _Left,
const Type& _Right
) const;
};
```

## Parameters

_Left

The left operand of type Type in the conjunction to be tested.

_Right

The right operand of type Type in the conjunction to be tested.

## Return Value

true if and only if _Left is true and _Right is true; otherwise false.

## Example

```// functional_logical_and.cpp
// compile with: /EHsc
#include <deque>
#include <algorithm>
#include <functional>
#include <iostream>

int main( )
{
using namespace std;
deque<bool> d1, d2, d3( 7 );
deque<bool>::iterator iter1, iter2, iter3;

int i;
for ( i = 0 ; i < 7 ; i++ )
{
d1.push_back((bool)((rand() % 2) != 0));
}

int j;
for ( j = 0 ; j < 7 ; j++ )
{
d2.push_back((bool)((rand() % 2 ) != 0));
}

cout << boolalpha;    // boolalpha I/O flag on

cout << "Original deque:\n d1 = ( " ;
for ( iter1 = d1.begin( ) ; iter1 != d1.end( ) ; iter1++ )
cout << *iter1 << " ";
cout << ")" << endl;

cout << "Original deque:\n d2 = ( " ;
for ( iter2 = d2.begin( ) ; iter2 != d2.end( ) ; iter2++ )
cout << *iter2 << " ";
cout << ")" << endl;

// To find element-wise conjunction of the truth values
// of d1 & d2, use the logical_and function object
transform( d1.begin( ), d1.end( ), d2.begin( ),
d3.begin( ), logical_and<bool>( ) );
cout << "The deque which is the conjuction of d1 & d2 is:\n d3 = ( " ;
for ( iter3 = d3.begin( ) ; iter3 != d3.end( ) ; iter3++ )
cout << *iter3 << " ";
cout << ")" << endl;
}
```
Original deque: d1 = ( true true false false true false false ) Original deque: d2 = ( false false false true true true true ) The deque which is the conjuction of d1 & d2 is: d3 = ( false false false false true false false )