1.. Sequences/Concepts//Integral Sequence Wrapper |90
2
3Integral Sequence Wrapper
4=========================
5
6Description
7-----------
8
9An |Integral Sequence Wrapper| is a class template that provides a concise
10interface for creating a corresponding sequence of |Integral Constant|\ s. In
11particular, assuming that ``seq`` is a name of the wrapper's underlying
12sequence and |c1...cn| are integral constants of an integral type ``T`` to
13be stored in the sequence, the wrapper provides us with the following
14notation:
15
16    .. line-block::
17
18        ``seq_c<T``,\ |c1...cn|\ ``>``
19
20If ``seq`` is a |Variadic Sequence|, *numbered* wrapper forms are
21also avaialable:
22
23    .. line-block::
24
25        ``seq``\ *n*\ ``_c<T``,\ |c1...cn|\ ``>``
26
27
28
29Expression requirements
30-----------------------
31
32|In the following table...| ``seq`` is a placeholder token for the
33|Integral Sequence Wrapper|'s underlying sequence's name.
34
35
36.. |seq_c| replace:: ``seq_c<T``,\ |c1...cn|
37.. |seqn_c| replace:: ``seq``\ *n*\ ``_c<T``,\ |c1...cn|
38
39
40+-------------------------------+-----------------------+---------------------------+
41| Expression                    | Type                  | Complexity                |
42+===============================+=======================+===========================+
43| |seq_c|\ ``>``                | |Forward Sequence|    | Amortized constant time.  |
44+-------------------------------+-----------------------+---------------------------+
45| |seq_c|\ ``>::type``          | |Forward Sequence|    | Amortized constant time.  |
46+-------------------------------+-----------------------+---------------------------+
47| |seq_c|\ ``>::value_type``    | An integral type      | Amortized constant time.  |
48+-------------------------------+-----------------------+---------------------------+
49| |seqn_c|\ ``>``               | |Forward Sequence|    | Amortized constant time.  |
50+-------------------------------+-----------------------+---------------------------+
51| |seqn_c|\ ``>::type``         | |Forward Sequence|    | Amortized constant time.  |
52+-------------------------------+-----------------------+---------------------------+
53| |seqn_c|\ ``>::value_type``   | An integral type      | Amortized constant time.  |
54+-------------------------------+-----------------------+---------------------------+
55
56
57Expression semantics
58--------------------
59
60
61.. parsed-literal::
62
63    typedef seq_c<T,\ |c1...cn|> s;
64    typedef seq\ *n*\ _c<T,\ |c1...cn|> s;
65
66:Semantics:
67    ``s`` is a sequence ``seq`` of integral constant wrappers ``integral_c<T,``\ |c1|\ ``>``,
68    ``integral_c<T,``\ |c2|\ ``>``, ... ``integral_c<T,``\ |cn|\ ``>``.
69
70:Postcondition:
71    ``size<s>::value == n``.
72
73    .. .. parsed-literal::
74
75        BOOST_MPL_ASSERT_RELATION(( at_c<v,0>::type::value,==,\ |c1| ));
76        BOOST_MPL_ASSERT_RELATION(( at_c<v,1>::type::value,==,\ |c2| ));
77        ...
78        BOOST_MPL_ASSERT_RELATION(( at_c<v,\ *n*>::type::value,==,\ |cn| ));
79
80
81.. ..........................................................................
82
83.. parsed-literal::
84
85    typedef seq_c<T,\ |c1...cn|>::type s;
86    typedef seq\ *n*\ _c<T,\ |c1...cn|>::type s;
87
88:Semantics:
89    ``s`` is identical to
90    ``seq``\ *n*\ ``<``\ ``integral_c<T,``\ |c1|\ ``>``,\ ``integral_c<T,``\ |c2|\ ``>``,
91    ... ``integral_c<T,``\ |cn|\ ``>`` ``>``.
92
93
94.. ..........................................................................
95
96.. parsed-literal::
97
98    typedef seq_c<T,\ |c1...cn|>::value_type t;
99    typedef seq\ *n*\ _c<T,\ |c1...cn|>::value_type t;
100
101:Semantics:
102    ``is_same<t,T>::value == true``.
103
104
105Models
106------
107
108* |vector_c|
109* |list_c|
110* |set_c|
111
112See also
113--------
114
115|Sequences|, |Variadic Sequence|, |Integral Constant|
116
117
118.. copyright:: Copyright �  2001-2009 Aleksey Gurtovoy and David Abrahams
119   Distributed under the Boost Software License, Version 1.0. (See accompanying
120   file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
121