• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4<title>Interval Construction</title>
5<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7<link rel="home" href="../../index.html" title="Chapter 1. Boost.Icl">
8<link rel="up" href="../function_reference.html" title="Function Reference">
9<link rel="prev" href="streaming__conversion.html" title="Streaming, conversion">
10<link rel="next" href="additional_interval_orderings.html" title="Additional Interval Orderings">
11</head>
12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13<table cellpadding="2" width="100%"><tr>
14<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
15<td align="center"><a href="../../../../../../index.html">Home</a></td>
16<td align="center"><a href="../../../../../libraries.htm">Libraries</a></td>
17<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
20</tr></table>
21<hr>
22<div class="spirit-nav">
23<a accesskey="p" href="streaming__conversion.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../function_reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="additional_interval_orderings.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
24</div>
25<div class="section">
26<div class="titlepage"><div><div><h3 class="title">
27<a name="boost_icl.function_reference.interval_construction"></a><a class="link" href="interval_construction.html" title="Interval Construction">Interval
28      Construction</a>
29</h3></div></div></div>
30<div class="informaltable"><table class="table">
31<colgroup>
32<col>
33<col>
34<col>
35<col>
36<col>
37<col>
38<col>
39</colgroup>
40<thead><tr>
41<th>
42                <p>
43                  T
44                </p>
45              </th>
46<th>
47                <p>
48                  discrete<br> _interval
49                </p>
50              </th>
51<th>
52                <p>
53                  continuous<br> _interval
54                </p>
55              </th>
56<th>
57                <p>
58                  right_open<br> _interval
59                </p>
60              </th>
61<th>
62                <p>
63                  left_open<br> _interval
64                </p>
65              </th>
66<th>
67                <p>
68                  closed<br> _interval
69                </p>
70              </th>
71<th>
72                <p>
73                  open<br> _interval
74                </p>
75              </th>
76</tr></thead>
77<tbody>
78<tr>
79<td>
80                <p>
81                  Interval bounds
82                </p>
83              </td>
84<td>
85                <p>
86                  dynamic
87                </p>
88              </td>
89<td>
90                <p>
91                  dynamic
92                </p>
93              </td>
94<td>
95                <p>
96                  static
97                </p>
98              </td>
99<td>
100                <p>
101                  static
102                </p>
103              </td>
104<td>
105                <p>
106                  static
107                </p>
108              </td>
109<td>
110                <p>
111                  static
112                </p>
113              </td>
114</tr>
115<tr>
116<td>
117                <p>
118                  Form
119                </p>
120              </td>
121<td>
122              </td>
123<td>
124              </td>
125<td>
126                <p>
127                  asymmetric
128                </p>
129              </td>
130<td>
131                <p>
132                  asymmetric
133                </p>
134              </td>
135<td>
136                <p>
137                  symmetric
138                </p>
139              </td>
140<td>
141                <p>
142                  symmetric
143                </p>
144              </td>
145</tr>
146<tr>
147<td>
148                <p>
149                  <span class="emphasis"><em><span class="bold"><strong>Construct</strong></span></em></span>
150                </p>
151              </td>
152<td>
153              </td>
154<td>
155              </td>
156<td>
157              </td>
158<td>
159              </td>
160<td>
161              </td>
162<td>
163              </td>
164</tr>
165<tr>
166<td>
167                <p>
168                  <code class="computeroutput"><span class="identifier">T</span> <span class="identifier">singleton</span><span class="special">(</span><span class="keyword">const</span>
169                  <span class="identifier">P</span><span class="special">&amp;)</span></code>
170                </p>
171              </td>
172<td>
173                <p>
174                  <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
175                </p>
176              </td>
177<td>
178                <p>
179                  <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
180                </p>
181              </td>
182<td>
183                <p>
184                  <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
185                </p>
186              </td>
187<td>
188                <p>
189                  <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
190                </p>
191              </td>
192<td>
193                <p>
194                  <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
195                </p>
196              </td>
197<td>
198                <p>
199                  <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
200                </p>
201              </td>
202</tr>
203<tr>
204<td>
205                <p>
206                  <code class="computeroutput"><span class="identifier">T</span> <span class="identifier">construct</span><span class="special">(</span><span class="keyword">const</span>
207                  <span class="identifier">P</span><span class="special">&amp;,</span>
208                  <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span></code>
209                </p>
210              </td>
211<td>
212                <p>
213                  <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
214                </p>
215              </td>
216<td>
217                <p>
218                  <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
219                </p>
220              </td>
221<td>
222                <p>
223                  <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
224                  <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
225                </p>
226              </td>
227<td>
228                <p>
229                  <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
230                  <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
231                </p>
232              </td>
233<td>
234                <p>
235                  <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
236                </p>
237              </td>
238<td>
239                <p>
240                  <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
241                </p>
242              </td>
243</tr>
244<tr>
245<td>
246                <p>
247</p>
248<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">T</span> <span class="identifier">construct</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;,</span> <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;,</span>
249            <span class="identifier">interval_bounds</span>   <span class="special">)</span>
250</pre>
251<p>
252                </p>
253              </td>
254<td>
255                <p>
256                  <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
257                </p>
258              </td>
259<td>
260                <p>
261                  <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
262                </p>
263              </td>
264<td>
265              </td>
266<td>
267              </td>
268<td>
269              </td>
270<td>
271              </td>
272</tr>
273<tr>
274<td>
275                <p>
276                  <code class="computeroutput"><span class="identifier">T</span> <span class="identifier">hull</span><span class="special">(</span><span class="keyword">const</span>
277                  <span class="identifier">P</span><span class="special">&amp;,</span>
278                  <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span></code>
279                </p>
280              </td>
281<td>
282                <p>
283                  <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
284                </p>
285              </td>
286<td>
287                <p>
288                  <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
289                </p>
290              </td>
291<td>
292                <p>
293                  <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
294                  <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
295                </p>
296              </td>
297<td>
298                <p>
299                  <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
300                  <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
301                </p>
302              </td>
303<td>
304                <p>
305                  <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
306                </p>
307              </td>
308<td>
309                <p>
310                  <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
311                </p>
312              </td>
313</tr>
314<tr>
315<td>
316                <p>
317                  <code class="computeroutput"><span class="identifier">T</span> <span class="identifier">span</span><span class="special">(</span><span class="keyword">const</span>
318                  <span class="identifier">P</span><span class="special">&amp;,</span>
319                  <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span></code>
320                </p>
321              </td>
322<td>
323                <p>
324                  <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
325                </p>
326              </td>
327<td>
328                <p>
329                  <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
330                </p>
331              </td>
332<td>
333                <p>
334                  <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
335                  <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
336                </p>
337              </td>
338<td>
339                <p>
340                  <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
341                  <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
342                </p>
343              </td>
344<td>
345                <p>
346                  <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
347                </p>
348              </td>
349<td>
350                <p>
351                  <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
352                </p>
353              </td>
354</tr>
355<tr>
356<td>
357                <p>
358                  <code class="computeroutput"><span class="keyword">static</span> <span class="identifier">T</span>
359                  <span class="identifier">right_open</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;,</span> <span class="keyword">const</span>
360                  <span class="identifier">P</span><span class="special">&amp;)</span></code>
361                </p>
362              </td>
363<td>
364                <p>
365                  <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
366                </p>
367              </td>
368<td>
369                <p>
370                  <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
371                </p>
372              </td>
373<td>
374              </td>
375<td>
376              </td>
377<td>
378              </td>
379<td>
380              </td>
381</tr>
382<tr>
383<td>
384                <p>
385                  <code class="computeroutput"><span class="keyword">static</span> <span class="identifier">T</span>
386                  <span class="identifier">left_open</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;,</span> <span class="keyword">const</span>
387                  <span class="identifier">P</span><span class="special">&amp;)</span></code>
388                </p>
389              </td>
390<td>
391                <p>
392                  <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
393                </p>
394              </td>
395<td>
396                <p>
397                  <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
398                </p>
399              </td>
400<td>
401              </td>
402<td>
403              </td>
404<td>
405              </td>
406<td>
407              </td>
408</tr>
409<tr>
410<td>
411                <p>
412                  <code class="computeroutput"><span class="keyword">static</span> <span class="identifier">T</span>
413                  <span class="identifier">closed</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;,</span> <span class="keyword">const</span>
414                  <span class="identifier">P</span><span class="special">&amp;)</span></code>
415                </p>
416              </td>
417<td>
418                <p>
419                  <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
420                </p>
421              </td>
422<td>
423                <p>
424                  <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
425                </p>
426              </td>
427<td>
428              </td>
429<td>
430              </td>
431<td>
432              </td>
433<td>
434              </td>
435</tr>
436<tr>
437<td>
438                <p>
439                  <code class="computeroutput"><span class="keyword">static</span> <span class="identifier">T</span>
440                  <span class="identifier">open</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;,</span> <span class="keyword">const</span>
441                  <span class="identifier">P</span><span class="special">&amp;)</span></code>
442                </p>
443              </td>
444<td>
445                <p>
446                  <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
447                </p>
448              </td>
449<td>
450                <p>
451                  <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
452                </p>
453              </td>
454<td>
455              </td>
456<td>
457              </td>
458<td>
459              </td>
460<td>
461              </td>
462</tr>
463</tbody>
464</table></div>
465<p>
466        The table above shows the availability of functions, that allow the construction
467        of intervals. All interval constructin functins are of <span class="emphasis"><em><span class="bold"><strong>constant time and space complexity</strong></span></em></span>.
468      </p>
469<div class="informaltable"><table class="table">
470<colgroup>
471<col>
472<col>
473</colgroup>
474<thead><tr>
475<th>
476                <p>
477                  <span class="emphasis"><em><span class="bold"><strong>Construct</strong></span></em></span>
478                </p>
479              </th>
480<th>
481                <p>
482                  Description
483                </p>
484              </th>
485</tr></thead>
486<tbody>
487<tr>
488<td>
489                <p>
490                  <code class="computeroutput"><span class="identifier">T</span> <span class="identifier">singleton</span><span class="special">(</span><span class="keyword">const</span>
491                  <span class="identifier">P</span><span class="special">&amp;</span>
492                  <span class="identifier">value</span><span class="special">)</span></code>
493                </p>
494              </td>
495<td>
496                <p>
497                  Constructs an interval that contains exactly one element <code class="computeroutput"><span class="identifier">value</span></code>. For all interval types
498                  of the icl sigletons can be constructed for <span class="emphasis"><em>discrete</em></span>
499                  domain types. For continuous domain types, only <code class="computeroutput"><a class="link" href="../../boost/icl/continuous_interval.html" title="Class template continuous_interval">continuous_interval</a></code>
500                  is capable to construct a singleton.
501                </p>
502              </td>
503</tr>
504<tr>
505<td>
506                <p>
507                  <code class="computeroutput"><span class="identifier">T</span> <span class="identifier">construct</span><span class="special">(</span><span class="keyword">const</span>
508                  <span class="identifier">P</span><span class="special">&amp;</span>
509                  <span class="identifier">lower</span><span class="special">,</span>
510                  <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;</span> <span class="identifier">upper</span><span class="special">)</span></code>
511                </p>
512              </td>
513<td>
514                <p>
515                  Contructs an interval with lower bound <code class="computeroutput"><span class="identifier">lower</span></code>
516                  and upper bound <code class="computeroutput"><span class="identifier">upper</span></code>
517                </p>
518              </td>
519</tr>
520<tr>
521<td>
522                <p>
523</p>
524<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">T</span> <span class="identifier">construct</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;</span> <span class="identifier">lower</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;</span> <span class="identifier">upper</span><span class="special">,</span>
525            <span class="identifier">interval_bounds</span> <span class="identifier">bounds</span>
526            <span class="special">=</span> <span class="identifier">interval_bounds</span><span class="special">::</span><span class="identifier">right_open</span><span class="special">())</span>
527</pre>
528<p>
529                </p>
530              </td>
531<td>
532                <p>
533                  For dynamically bounded intervals this function constructs an interval
534                  with interval bounds specified by the third parameter.
535                </p>
536              </td>
537</tr>
538<tr>
539<td>
540                <p>
541                  <code class="computeroutput"><span class="identifier">T</span> <span class="identifier">hull</span><span class="special">(</span><span class="keyword">const</span>
542                  <span class="identifier">P</span><span class="special">&amp;</span>
543                  <span class="identifier">x1</span><span class="special">,</span>
544                  <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;</span> <span class="identifier">x2</span><span class="special">)</span></code>
545                </p>
546              </td>
547<td>
548                <p>
549                  <code class="computeroutput"><span class="identifier">hull</span><span class="special">(</span><span class="identifier">x1</span><span class="special">,</span><span class="identifier">x2</span><span class="special">)</span></code>
550                  constructs the smallest interval that contains both <code class="computeroutput"><span class="identifier">x1</span></code> and <code class="computeroutput"><span class="identifier">x2</span></code>.
551                  <code class="computeroutput"><span class="identifier">x2</span></code> may be smaller
552                  than <code class="computeroutput"><span class="identifier">x1</span></code>.
553                </p>
554              </td>
555</tr>
556<tr>
557<td>
558                <p>
559                  <code class="computeroutput"><span class="identifier">T</span> <span class="identifier">span</span><span class="special">(</span><span class="keyword">const</span>
560                  <span class="identifier">P</span><span class="special">&amp;</span>
561                  <span class="identifier">x1</span><span class="special">,</span>
562                  <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;</span> <span class="identifier">x2</span><span class="special">)</span></code>
563                </p>
564              </td>
565<td>
566                <p>
567                  <code class="computeroutput"><span class="identifier">span</span><span class="special">(</span><span class="identifier">x1</span><span class="special">,</span><span class="identifier">x2</span><span class="special">)</span></code>
568                  constructs the interval <code class="computeroutput"><span class="identifier">construct</span><span class="special">(</span><span class="identifier">min</span><span class="special">(</span><span class="identifier">x1</span><span class="special">,</span><span class="identifier">x2</span><span class="special">),</span> <span class="identifier">max</span><span class="special">(</span><span class="identifier">x1</span><span class="special">,</span><span class="identifier">x2</span><span class="special">))</span></code>. Note the differences between
569                  <code class="computeroutput"><span class="identifier">span</span></code>, <code class="computeroutput"><span class="identifier">hull</span></code> and <code class="computeroutput"><span class="identifier">construct</span></code>:
570</p>
571<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">span</span><span class="special">&lt;</span><span class="identifier">right_open_interval</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="special">&gt;(</span><span class="number">2</span><span class="special">,</span><span class="number">1</span><span class="special">)</span>      <span class="special">==</span> <span class="special">[</span><span class="number">1</span><span class="special">,</span><span class="number">2</span><span class="special">)</span> <span class="comment">// does NOT contain 2</span>
572<span class="identifier">hull</span><span class="special">&lt;</span><span class="identifier">right_open_interval</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="special">&gt;(</span><span class="number">2</span><span class="special">,</span><span class="number">1</span><span class="special">)</span>      <span class="special">==</span> <span class="special">[</span><span class="number">1</span><span class="special">,</span><span class="number">3</span><span class="special">)</span> <span class="comment">// contains 2</span>
573<span class="identifier">construct</span><span class="special">&lt;</span><span class="identifier">right_open_interval</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="special">&gt;(</span><span class="number">2</span><span class="special">,</span><span class="number">1</span><span class="special">)</span> <span class="special">==</span> <span class="special">[)</span>    <span class="comment">// is empty</span>
574</pre>
575<p>
576                </p>
577              </td>
578</tr>
579<tr>
580<td>
581                <p>
582</p>
583<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">static</span> <span class="identifier">T</span> <span class="identifier">right_open</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;,</span> <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span>
584<span class="keyword">static</span> <span class="identifier">T</span> <span class="identifier">left_open</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;,</span> <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span>
585<span class="keyword">static</span> <span class="identifier">T</span> <span class="identifier">closed</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;,</span> <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span>
586<span class="keyword">static</span> <span class="identifier">T</span> <span class="identifier">open</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;,</span> <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span>
587</pre>
588<p>
589                </p>
590              </td>
591<td>
592                <p>
593                  For dynamically bounded intervals there are for static functions
594                  to construct intervals with the four interval bound types:
595</p>
596<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">discrete_interval</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span>      <span class="identifier">itv1</span> <span class="special">=</span> <span class="identifier">discrete_interval</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">closed</span><span class="special">(</span><span class="number">0</span><span class="special">,</span><span class="number">42</span><span class="special">);</span>
597<span class="identifier">continuous_interval</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">itv2</span> <span class="special">=</span> <span class="identifier">continuous_interval</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">right_open</span><span class="special">(</span><span class="number">0.0</span><span class="special">,</span> <span class="number">1.0</span><span class="special">);</span>
598</pre>
599<p>
600                </p>
601              </td>
602</tr>
603<tr>
604<td>
605                <p>
606                  <span class="emphasis"><em><span class="bold"><strong>Using the interval default</strong></span></em></span>
607                </p>
608              </td>
609<td>
610              </td>
611</tr>
612<tr>
613<td>
614                <p>
615                  <code class="computeroutput"><span class="identifier">interval</span><span class="special">&lt;</span><span class="identifier">P</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
616                </p>
617              </td>
618<td>
619                <p>
620                  There is a library default, for all interval containers of the
621                  <span class="bold"><strong>icl</strong></span>. The intension of the library
622                  default is to minimize the need for parameter specification, when
623                  working with <span class="bold"><strong>icl</strong></span> class templates.
624                  We can get the library default interval type as <code class="computeroutput"><span class="identifier">interval</span><span class="special">&lt;</span><span class="identifier">P</span><span class="special">&gt;::</span><span class="identifier">type</span></code>.
625                  The library default uses <span class="emphasis"><em><span class="bold"><strong>dynamically
626                  bounded intervals</strong></span></em></span>. You can switch to <span class="emphasis"><em><span class="bold"><strong>statically bounded intervals</strong></span></em></span>
627                  by <code class="computeroutput"><span class="preprocessor">#define</span> <span class="identifier">BOOST_ICL_USE_STATIC_BOUNDED_INTERVALS</span></code>
628                  prior to icl includes.
629                </p>
630              </td>
631</tr>
632<tr>
633<td>
634                <p>
635</p>
636<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">static</span> <span class="identifier">T</span> <span class="identifier">right_open</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;,</span> <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span>
637<span class="keyword">static</span> <span class="identifier">T</span> <span class="identifier">left_open</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;,</span> <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span>
638<span class="keyword">static</span> <span class="identifier">T</span> <span class="identifier">closed</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;,</span> <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span>
639<span class="keyword">static</span> <span class="identifier">T</span> <span class="identifier">open</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;,</span> <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span>
640</pre>
641<p>
642                </p>
643              </td>
644<td>
645                <p>
646                  For template struct <code class="computeroutput"><span class="identifier">interval</span></code>
647                  that always uses the library default the static functions for the
648                  four interval bound types are also available.
649</p>
650<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">interval</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">type</span>    <span class="identifier">itv1</span> <span class="special">=</span> <span class="identifier">interval</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">closed</span><span class="special">(</span><span class="number">0</span><span class="special">,</span><span class="number">42</span><span class="special">);</span>
651<span class="identifier">interval</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">itv2</span> <span class="special">=</span> <span class="identifier">interval</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">right_open</span><span class="special">(</span><span class="number">0.0</span><span class="special">,</span> <span class="number">1.0</span><span class="special">);</span>
652</pre>
653<p>
654                  This works with the statically bounded intervals as well, with
655                  the restriction that for continuous domain types the matching function
656                  has to be used:
657</p>
658<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_ICL_USE_STATIC_BOUNDED_INTERVALS</span>
659<span class="special">.</span> <span class="special">.</span> <span class="special">.</span>
660<span class="comment">// library default is the statically bounded right_open_interval</span>
661<span class="identifier">interval</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">type</span>    <span class="identifier">itv1</span> <span class="special">=</span> <span class="identifier">interval</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">closed</span><span class="special">(</span><span class="number">0</span><span class="special">,</span><span class="number">42</span><span class="special">);</span> <span class="comment">//==[0,43) //ok, bounds are shifted</span>
662<span class="identifier">interval</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">itv2</span> <span class="special">=</span> <span class="identifier">interval</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">right_open</span><span class="special">(</span><span class="number">0.0</span><span class="special">,</span> <span class="number">1.0</span><span class="special">);</span> <span class="comment">//ok. right_open matches</span>
663<span class="identifier">interval</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">itv3</span> <span class="special">=</span> <span class="identifier">interval</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">closed</span><span class="special">(</span><span class="number">0.0</span><span class="special">,</span> <span class="number">1.0</span><span class="special">);</span>     <span class="comment">//will NOT compile</span>
664</pre>
665<p>
666                  See also examples <a class="link" href="../examples/dynamic_interval.html" title="Dynamic interval">Dynamic
667                  intervals</a> and <a class="link" href="../examples/static_interval.html" title="Static interval">Static
668                  intervals</a>
669                </p>
670              </td>
671</tr>
672</tbody>
673</table></div>
674<p>
675        <span class="emphasis"><em><span class="bold"><strong>See also . . .</strong></span></em></span>
676      </p>
677<div class="informaltable"><table class="table">
678<colgroup><col></colgroup>
679<thead><tr></tr></thead>
680<tbody>
681<tr><td>
682                <p>
683                  <a class="link" href="../examples/dynamic_interval.html" title="Dynamic interval"><span class="emphasis"><em><span class="bold"><strong>Example: Dynamically bounded intervals and the library
684                  default</strong></span></em></span></a>
685                </p>
686              </td></tr>
687<tr><td>
688                <p>
689                  <a class="link" href="../examples/static_interval.html" title="Static interval"><span class="emphasis"><em><span class="bold"><strong>Example: Statically bounded intervals, changing the
690                  library default</strong></span></em></span></a>
691                </p>
692              </td></tr>
693</tbody>
694</table></div>
695<p>
696        <span class="emphasis"><em><span class="bold"><strong>Back to section . . .</strong></span></em></span>
697      </p>
698<div class="informaltable"><table class="table">
699<colgroup><col></colgroup>
700<thead><tr></tr></thead>
701<tbody>
702<tr><td>
703                <p>
704                  <a class="link" href="../interface/function_synopsis.html#additional_interval_functions"><span class="emphasis"><em><span class="bold"><strong>Additional interval functions</strong></span></em></span></a>
705                </p>
706              </td></tr>
707<tr><td>
708                <p>
709                  <a class="link" href="../interface/function_synopsis.html#function_synopsis_table"><span class="emphasis"><em><span class="bold"><strong>Function
710                  Synopsis</strong></span></em></span></a>
711                </p>
712              </td></tr>
713<tr><td>
714                <p>
715                  <a class="link" href="../interface.html" title="Interface"><span class="emphasis"><em><span class="bold"><strong>Interface</strong></span></em></span></a>
716                </p>
717              </td></tr>
718</tbody>
719</table></div>
720</div>
721<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
722<td align="left"></td>
723<td align="right"><div class="copyright-footer">Copyright © 2007-2010 Joachim
724      Faulhaber<br>Copyright © 1999-2006 Cortex Software
725      GmbH<p>
726        Distributed under the Boost Software License, Version 1.0. (See accompanying
727        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
728      </p>
729</div></td>
730</tr></table>
731<hr>
732<div class="spirit-nav">
733<a accesskey="p" href="streaming__conversion.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../function_reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="additional_interval_orderings.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
734</div>
735</body>
736</html>
737