# minus

### Synopsis

    template<
          typename T1
        , typaname T2
        , typaname T3 = integral_c<int,0>
        , ...
        , typaname Tn = integral_c<int,0>
        >
    struct minus
    {
        typedef unspecified type;
    };

### Description

Returns the difference of its arguments [1].

### Definition

    #include "boost/mpl/arithmetic/minus.hpp"

### Parameters

Parameter | Requirement | Description
--- | --- | ---
`T1, T2, .., Tn` | A model of Integral Constant |

### Expression semantics

Expression | Expression type | Precondition | Semantics | Postcondition
--- | --- | --- | --- | ---
`typedef minus<t1,t2,..,tn>::type diff;` | A model of Integral Constant |  | Equivalent to `typedef integral_c<typeof(t1::value - t2::value .. - tn::value), t1::value - t2::value .. - tn::value > diff;` |

### Complexity

Amortized constant time.

### Example

    typedef minus< integral_c<short,-1>, integral_c<long,10> >::type diff;
    BOOST_STATIC_ASSERT(diff::value == -11));
    BOOST_MPL_ASSERT_IS_SAME(diff::value_type, long);

### Notes

[1] The `minus` metafunction can be (and is expected to be) specialized by user to work on user-defined types that do not satisfy the Integral Constant requirements. The requirements listed here are the ones imposed by the default implementation.

### See also

Metafunctions, `plus`, `divides`, `multiplies`, `modulus`, `negate`

Table of Content | Reference
Last edited July 17, 2002 4:06 am