Front Page / Metafunctions / Comparisons / equal_to

# equal_to

### Synopsis

    template<
          typename T1
        , typename T2
        >
    struct equal_to
    {
        typedef unspecified type;
    };

### Description

Returns a true-valued Integral Constant if `T1` and `T2` are equal.

### Header

    #include <boost/mpl/equal_to.hpp>
    #include <boost/mpl/comparison.hpp>

### Model of

Numeric Metafunction

### Parameters

Parameter | Requirement | Description
--- | --- | ---
`T1`, `T2` | Integral Constant | Operation's arguments.

[Note: The requirements listed in this specification are the ones imposed by the default implementation. See Numeric Metafunction concept for the details on how to provide an implementation for a user-defined numeric type that does not satisfy the Integral Constant requirements. — end note]

### Expression semantics

For any Integral Constants `c1` and `c2`:

    typedef equal_to<c1,c2>::type r;

Return type: | Integral Constant.
Semantics: | Equivalent to
    typedef bool_< (c1::value == c2::value) > r;

    typedef equal_to<c1,c2> r;

Return type: | Integral Constant.
Semantics: | Equivalent to
    struct r : equal_to<c1,c2>::type {};

### Complexity

Amortized constant time.

### Example

    BOOST_MPL_ASSERT_NOT(( equal_to< int_<0>, int_<10> > ));
    BOOST_MPL_ASSERT_NOT(( equal_to< long_<10>, int_<0> > ));
    BOOST_MPL_ASSERT(( equal_to< long_<10>, int_<10> > ));

### See also

Comparisons, Numeric Metafunction, `numeric_cast`, `not_equal_to`, `less`