Front Page / Metafunctions / Comparisons / less

# less

### Synopsis

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

### Description

Returns a true-valued Integral Constant if `T1` is less than `T2`.

### Header

    #include <boost/mpl/less.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 less<c1,c2>::type r;

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

    typedef less<c1,c2> r;

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

### Complexity

Amortized constant time.

### Example

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

### See also

Comparisons, Numeric Metafunction, `numeric_cast`, `less_equal`, `greater`, `equal`