]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/mpl/doc/src/refmanual/modulus.rst
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / mpl / doc / src / refmanual / modulus.rst
1 .. Metafunctions/Arithmetic Operations//modulus |50
2
3 modulus
4 =======
5
6 Synopsis
7 --------
8
9 .. parsed-literal::
10
11 template<
12 typename T1
13 , typename T2
14 >
15 struct modulus
16 {
17 typedef |unspecified| type;
18 };
19
20
21
22 Description
23 -----------
24
25 Returns the modulus of its arguments.
26
27
28 Header
29 ------
30
31 .. parsed-literal::
32
33 #include <boost/mpl/modulus.hpp>
34 #include <boost/mpl/arithmetic.hpp>
35
36
37 Model of
38 --------
39
40 |Numeric Metafunction|
41
42
43 Parameters
44 ----------
45
46 +---------------+---------------------------+-----------------------------------------------+
47 | Parameter | Requirement | Description |
48 +===============+===========================+===============================================+
49 | ``T1``, ``T2``| |Integral Constant| | Operation's arguments. |
50 +---------------+---------------------------+-----------------------------------------------+
51
52 |Note:| |numeric metafunction note| |-- end note|
53
54
55 Expression semantics
56 --------------------
57
58 For any |Integral Constant|\ s ``c1`` and ``c2``:
59
60
61 .. parsed-literal::
62
63 typedef modulus<c1,c2>::type r;
64
65 :Return type:
66 |Integral Constant|.
67
68 :Precondition:
69 ``c2::value != 0``
70
71 :Semantics:
72 Equivalent to
73
74 .. parsed-literal::
75
76 typedef integral_c<
77 typeof(c1::value % c2::value)
78 , ( c1::value % c2::value )
79 > r;
80
81
82 .. ..........................................................................
83
84 .. parsed-literal::
85
86 typedef modulus<c1,c2> r;
87
88 :Return type:
89 |Integral Constant|.
90
91 :Precondition:
92 ``c2::value != 0``
93
94 :Semantics:
95 Equivalent to
96
97 .. parsed-literal::
98
99 struct r : modulus<c1,c2>::type {};
100
101
102 Complexity
103 ----------
104
105 Amortized constant time.
106
107
108 Example
109 -------
110
111 .. parsed-literal::
112
113 typedef modulus< int_<10>, long_<3> >::type r;
114 BOOST_MPL_ASSERT_RELATION( r::value, ==, 1 );
115 BOOST_MPL_ASSERT(( is_same< r::value_type, long > ));
116
117
118
119 See also
120 --------
121
122 |Metafunctions|, |Numeric Metafunction|, |numeric_cast|, |divides|, |times|, |plus|
123
124
125 .. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams
126 Distributed under the Boost Software License, Version 1.0. (See accompanying
127 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)