Front Page / Algorithms / Querying Algorithms / equal

# equal

### Synopsis

    template<
          typename Seq1
        , typename Seq2
        , typename Pred = is_same<_1,_2>
        >
    struct equal
    {
        typedef unspecified type;
    };

### Description

Returns a true-valued Integral Constant if the two sequences `Seq1` and `Seq2` are identical when compared element-by-element.

### Header

    #include <boost/mpl/equal.hpp>

### Parameters

Parameter | Requirement | Description
--- | --- | ---
`Seq1`, `Seq2` | Forward Sequence | Sequences to compare.
`Pred` | Binary Lambda Expression | A comparison criterion.

### Expression semantics

For any Forward Sequences `s1` and `s2` and a binary Lambda Expression `pred`:

    typedef equal<s1,s2,pred>::type c;

Return type: | Integral Constant

Semantics:

`c::value == true` is and only if `size<s1>::value == size<s2>::value` and for every iterator `i` in [`begin<s1>::type`, `end<s1>::type`) `deref<i>::type` is identical to

    advance< begin<s2>::type, distance< begin<s1>::type,i >::type >::type

### Complexity

Linear. At most `size<s1>::value` comparisons.

### Example

    typedef vector<char,int,unsigned,long,unsigned long> s1;
    typedef list<char,int,unsigned,long,unsigned long> s2;

    BOOST_MPL_ASSERT(( equal<s1,s2> ));

### See also

Querying Algorithms, `find`, `find_if`