]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/icl/doc/html/boost_icl/interface.html
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / icl / doc / html / boost_icl / interface.html
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4 <title>Interface</title>
5 <link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
6 <meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
7 <link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.Icl">
8 <link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.Icl">
9 <link rel="prev" href="semantics/concept_induction.html" title="Concept Induction">
10 <link rel="next" href="interface/required_concepts.html" title="Required Concepts">
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="semantics/concept_induction.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="interface/required_concepts.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
24 </div>
25 <div class="section boost_icl_interface" lang="en">
26 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
27 <a name="boost_icl.interface"></a><a class="link" href="interface.html" title="Interface">Interface</a>
28 </h2></div></div></div>
29 <div class="toc"><dl>
30 <dt><span class="section"><a href="interface.html#boost_icl.interface.class_templates">Class templates</a></span></dt>
31 <dt><span class="section"><a href="interface/required_concepts.html">Required Concepts</a></span></dt>
32 <dt><span class="section"><a href="interface/associated_types.html">Associated Types</a></span></dt>
33 <dt><span class="section"><a href="interface/function_synopsis.html">Function Synopsis</a></span></dt>
34 </dl></div>
35 <p>
36 Section <span class="bold"><strong>Interface</strong></span> outlines types and functions
37 of the <span class="bold"><strong>Icl</strong></span>. Synoptical tables allow to review
38 the overall structure of the libraries design and to focus on structural equalities
39 and differences with the corresponding containers of the standard template
40 library.
41 </p>
42 <div class="section boost_icl_interface_class_templates" lang="en">
43 <div class="titlepage"><div><div><h3 class="title">
44 <a name="boost_icl.interface.class_templates"></a><a class="link" href="interface.html#boost_icl.interface.class_templates" title="Class templates">Class templates</a>
45 </h3></div></div></div>
46 <div class="toc"><dl>
47 <dt><span class="section"><a href="interface.html#boost_icl.interface.class_templates.intervals">Intervals</a></span></dt>
48 <dt><span class="section"><a href="interface.html#boost_icl.interface.class_templates.sets">Sets</a></span></dt>
49 <dt><span class="section"><a href="interface.html#boost_icl.interface.class_templates.maps">Maps</a></span></dt>
50 </dl></div>
51 <div class="section boost_icl_interface_class_templates_intervals" lang="en">
52 <div class="titlepage"><div><div><h4 class="title">
53 <a name="boost_icl.interface.class_templates.intervals"></a><a class="link" href="interface.html#boost_icl.interface.class_templates.intervals" title="Intervals">Intervals</a>
54 </h4></div></div></div>
55 <p>
56 In the <span class="bold"><strong>icl</strong></span> we have two groups of interval
57 types. There are <span class="emphasis"><em><span class="bold"><strong>statically bounded</strong></span></em></span>
58 intervals, <code class="computeroutput"><a class="link" href="../boost/icl/right_open_interval.html" title="Class template right_open_interval">right_open_interval</a></code>,
59 <code class="computeroutput"><a class="link" href="../boost/icl/left_open_interval.html" title="Class template left_open_interval">left_open_interval</a></code>,
60 <code class="computeroutput"><a class="link" href="../boost/icl/closed_interval.html" title="Class template closed_interval">closed_interval</a></code>,
61 <code class="computeroutput"><a class="link" href="../boost/icl/open_interval.html" title="Class template open_interval">open_interval</a></code>, that
62 always have the the same kind of interval borders and <span class="emphasis"><em><span class="bold"><strong>dynamically bounded</strong></span></em></span> intervals, <code class="computeroutput"><a class="link" href="../boost/icl/discrete_interval.html" title="Class template discrete_interval">discrete_interval</a></code>, <code class="computeroutput"><a class="link" href="../boost/icl/continuous_interval.html" title="Class template continuous_interval">continuous_interval</a></code> which
63 can have one of the four possible bound types at runtime.
64 </p>
65 <div class="table">
66 <a name="id1098652"></a><p class="title"><b>Table&#160;1.6.&#160;Interval class templates</b></p>
67 <div class="table-contents"><table class="table" summary="Interval class templates">
68 <colgroup>
69 <col>
70 <col>
71 <col>
72 <col>
73 </colgroup>
74 <thead><tr>
75 <th>
76 <p>
77 group
78 </p>
79 </th>
80 <th>
81 <p>
82 form
83 </p>
84 </th>
85 <th>
86 <p>
87 template
88 </p>
89 </th>
90 <th>
91 <p>
92 instance parameters
93 </p>
94 </th>
95 </tr></thead>
96 <tbody>
97 <tr>
98 <td>
99 <p>
100 statically bounded
101 </p>
102 </td>
103 <td>
104 <p>
105 asymmetric
106 </p>
107 </td>
108 <td>
109 <p>
110 <code class="computeroutput"><a class="link" href="../boost/icl/right_open_interval.html" title="Class template right_open_interval">right_open_interval</a></code>
111 </p>
112 </td>
113 <td>
114 <p>
115 <code class="computeroutput"><span class="special">&lt;</span><span class="keyword">class</span>
116 <span class="identifier">DomainT</span><span class="special">,</span>
117 <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span><span class="special">&gt;</span><span class="keyword">class</span> <span class="identifier">Compare</span><span class="special">&gt;</span></code>
118 </p>
119 </td>
120 </tr>
121 <tr>
122 <td>
123 <p>
124 </p>
125 </td>
126 <td>
127 <p>
128 </p>
129 </td>
130 <td>
131 <p>
132 <code class="computeroutput"><a class="link" href="../boost/icl/left_open_interval.html" title="Class template left_open_interval">left_open_interval</a></code>
133 </p>
134 </td>
135 <td>
136 <p>
137 <code class="computeroutput"><span class="special">&lt;...</span><span class="identifier">same</span>
138 <span class="keyword">for</span> <span class="identifier">all</span>
139 <span class="identifier">interval</span> <span class="keyword">class</span>
140 <span class="identifier">templates</span><span class="special">...&gt;</span></code>
141 </p>
142 </td>
143 </tr>
144 <tr>
145 <td>
146 <p>
147 </p>
148 </td>
149 <td>
150 <p>
151 symmetric
152 </p>
153 </td>
154 <td>
155 <p>
156 <code class="computeroutput"><a class="link" href="../boost/icl/closed_interval.html" title="Class template closed_interval">closed_interval</a></code>
157 </p>
158 </td>
159 <td>
160 <p>
161 </p>
162 </td>
163 </tr>
164 <tr>
165 <td>
166 <p>
167 </p>
168 </td>
169 <td>
170 <p>
171 </p>
172 </td>
173 <td>
174 <p>
175 <code class="computeroutput"><a class="link" href="../boost/icl/open_interval.html" title="Class template open_interval">open_interval</a></code>
176 </p>
177 </td>
178 <td>
179 <p>
180 </p>
181 </td>
182 </tr>
183 <tr>
184 <td>
185 <p>
186 dynamically bounded
187 </p>
188 </td>
189 <td>
190 <p>
191 </p>
192 </td>
193 <td>
194 <p>
195 <code class="computeroutput"><a class="link" href="../boost/icl/discrete_interval.html" title="Class template discrete_interval">discrete_interval</a></code>
196 </p>
197 </td>
198 <td>
199 <p>
200 </p>
201 </td>
202 </tr>
203 <tr>
204 <td>
205 <p>
206 </p>
207 </td>
208 <td>
209 <p>
210 </p>
211 </td>
212 <td>
213 <p>
214 <code class="computeroutput"><a class="link" href="../boost/icl/continuous_interval.html" title="Class template continuous_interval">continuous_interval</a></code>
215 </p>
216 </td>
217 <td>
218 <p>
219 </p>
220 </td>
221 </tr>
222 </tbody>
223 </table></div>
224 </div>
225 <br class="table-break"><p>
226 Not every class template works with all domain types. Use interval class
227 templates according the next table.
228 </p>
229 <div class="table">
230 <a name="id1101191"></a><p class="title"><b>Table&#160;1.7.&#160;Usability of interval class templates for discrete
231 or continuous domain types</b></p>
232 <div class="table-contents"><table class="table" summary="Usability of interval class templates for discrete
233 or continuous domain types">
234 <colgroup>
235 <col>
236 <col>
237 <col>
238 <col>
239 <col>
240 </colgroup>
241 <thead><tr>
242 <th>
243 <p>
244 group
245 </p>
246 </th>
247 <th>
248 <p>
249 form
250 </p>
251 </th>
252 <th>
253 <p>
254 template
255 </p>
256 </th>
257 <th>
258 <p>
259 discrete
260 </p>
261 </th>
262 <th>
263 <p>
264 continuous
265 </p>
266 </th>
267 </tr></thead>
268 <tbody>
269 <tr>
270 <td>
271 <p>
272 statically bounded
273 </p>
274 </td>
275 <td>
276 <p>
277 asymmetric
278 </p>
279 </td>
280 <td>
281 <p>
282 <code class="computeroutput"><a class="link" href="../boost/icl/right_open_interval.html" title="Class template right_open_interval">right_open_interval</a></code>
283 </p>
284 </td>
285 <td>
286 <p>
287 yes
288 </p>
289 </td>
290 <td>
291 <p>
292 yes
293 </p>
294 </td>
295 </tr>
296 <tr>
297 <td>
298 <p>
299 </p>
300 </td>
301 <td>
302 <p>
303 </p>
304 </td>
305 <td>
306 <p>
307 <code class="computeroutput"><a class="link" href="../boost/icl/left_open_interval.html" title="Class template left_open_interval">left_open_interval</a></code>
308 </p>
309 </td>
310 <td>
311 <p>
312 yes
313 </p>
314 </td>
315 <td>
316 <p>
317 yes
318 </p>
319 </td>
320 </tr>
321 <tr>
322 <td>
323 <p>
324 </p>
325 </td>
326 <td>
327 <p>
328 symmetric
329 </p>
330 </td>
331 <td>
332 <p>
333 <code class="computeroutput"><a class="link" href="../boost/icl/closed_interval.html" title="Class template closed_interval">closed_interval</a></code>
334 </p>
335 </td>
336 <td>
337 <p>
338 yes
339 </p>
340 </td>
341 <td>
342 <p>
343 </p>
344 </td>
345 </tr>
346 <tr>
347 <td>
348 <p>
349 </p>
350 </td>
351 <td>
352 <p>
353 </p>
354 </td>
355 <td>
356 <p>
357 <code class="computeroutput"><a class="link" href="../boost/icl/open_interval.html" title="Class template open_interval">open_interval</a></code>
358 </p>
359 </td>
360 <td>
361 <p>
362 yes
363 </p>
364 </td>
365 <td>
366 <p>
367 </p>
368 </td>
369 </tr>
370 <tr>
371 <td>
372 <p>
373 dynamically bounded
374 </p>
375 </td>
376 <td>
377 <p>
378 </p>
379 </td>
380 <td>
381 <p>
382 <code class="computeroutput"><a class="link" href="../boost/icl/discrete_interval.html" title="Class template discrete_interval">discrete_interval</a></code>
383 </p>
384 </td>
385 <td>
386 <p>
387 yes
388 </p>
389 </td>
390 <td>
391 <p>
392 </p>
393 </td>
394 </tr>
395 <tr>
396 <td>
397 <p>
398 </p>
399 </td>
400 <td>
401 <p>
402 </p>
403 </td>
404 <td>
405 <p>
406 <code class="computeroutput"><a class="link" href="../boost/icl/continuous_interval.html" title="Class template continuous_interval">continuous_interval</a></code>
407 </p>
408 </td>
409 <td>
410 <p>
411 </p>
412 </td>
413 <td>
414 <p>
415 yes
416 </p>
417 </td>
418 </tr>
419 </tbody>
420 </table></div>
421 </div>
422 <br class="table-break"><p>
423 From a pragmatical point of view, the most important interval class template
424 of the <span class="emphasis"><em>statically bounded</em></span> group is <code class="computeroutput"><a class="link" href="../boost/icl/right_open_interval.html" title="Class template right_open_interval">right_open_interval</a></code>.
425 For discrete domain types also closed intervals might be convenient. Asymmetric
426 intervals can be used with continuous domain types but <code class="computeroutput"><a class="link" href="../boost/icl/continuous_interval.html" title="Class template continuous_interval">continuous_interval</a></code>
427 is the only class template that allows to represent a singleton interval
428 that contains only one element.
429 </p>
430 <p>
431 Use <code class="computeroutput"><a class="link" href="../boost/icl/continuous_interval.html" title="Class template continuous_interval">continuous_interval</a></code>,
432 if you work with interval containers of countinuous domain types and you
433 want to be able to handle single values:
434 </p>
435 <p>
436
437 </p>
438 <pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">interval_set</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">less</span><span class="special">,</span> <span class="identifier">continuous_interval</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">IdentifiersT</span><span class="special">;</span>
439 <span class="identifier">IdentifiersT</span> <span class="identifier">identifiers</span><span class="special">,</span> <span class="identifier">excluded</span><span class="special">;</span>
440 <span class="identifier">identifiers</span> <span class="special">+=</span> <span class="identifier">continuous_interval</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&gt;::</span><span class="identifier">right_open</span><span class="special">(</span><span class="string">"a"</span><span class="special">,</span> <span class="string">"c"</span><span class="special">);</span>
441
442 <span class="comment">// special identifiers shall be excluded
443 </span><span class="identifier">identifiers</span> <span class="special">-=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">(</span><span class="string">"boost"</span><span class="special">);</span>
444 <span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"identifiers: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">identifiers</span> <span class="special">&lt;&lt;</span> <span class="identifier">endl</span><span class="special">;</span>
445
446 <span class="identifier">excluded</span> <span class="special">=</span> <span class="identifier">IdentifiersT</span><span class="special">(</span><span class="identifier">icl</span><span class="special">::</span><span class="identifier">hull</span><span class="special">(</span><span class="identifier">identifiers</span><span class="special">))</span> <span class="special">-</span> <span class="identifier">identifiers</span><span class="special">;</span>
447 <span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"excluded : "</span> <span class="special">&lt;&lt;</span> <span class="identifier">excluded</span> <span class="special">&lt;&lt;</span> <span class="identifier">endl</span><span class="special">;</span>
448
449 <span class="comment">//------ Program output: --------
450 </span><span class="identifier">identifiers</span><span class="special">:</span> <span class="special">{[</span><span class="identifier">a</span><span class="special">,</span><span class="identifier">boost</span><span class="special">)(</span><span class="identifier">boost</span><span class="special">,</span><span class="identifier">c</span><span class="special">)}</span>
451 <span class="identifier">excluded</span> <span class="special">:</span> <span class="special">{[</span><span class="identifier">boost</span><span class="special">,</span><span class="identifier">boost</span><span class="special">]}</span>
452 </pre>
453 <p>
454 </p>
455 <a name="boost_icl.interface.class_templates.intervals.library_defaults_and_class_template__code__phrase_role__identifier__interval__phrase___code_"></a><h5>
456 <a name="id1101935"></a>
457 <a class="link" href="interface.html#boost_icl.interface.class_templates.intervals.library_defaults_and_class_template__code__phrase_role__identifier__interval__phrase___code_">Library
458 defaults and class template <code class="computeroutput"><span class="identifier">interval</span></code></a>
459 </h5>
460 <p>
461 As shown in the example above, you can choose an interval type by instantiating
462 the interval container template with the desired type.
463 </p>
464 <p>
465
466 </p>
467 <pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">interval_set</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">less</span><span class="special">,</span> <span class="identifier">continuous_interval</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">IdentifiersT</span><span class="special">;</span>
468 </pre>
469 <p>
470 </p>
471 <p>
472 But you can work with the library default for interval template parameters
473 as well, which is <code class="computeroutput"><span class="identifier">interval</span><span class="special">&lt;</span><span class="identifier">DomainT</span><span class="special">,</span><span class="identifier">Compare</span><span class="special">&gt;::</span><span class="identifier">type</span></code>.
474 </p>
475 <div class="informaltable"><table class="table">
476 <colgroup>
477 <col>
478 <col>
479 <col>
480 <col>
481 </colgroup>
482 <thead><tr>
483 <th>
484 <p>
485 </p>
486 </th>
487 <th>
488 <p>
489 interval bounds
490 </p>
491 </th>
492 <th>
493 <p>
494 domain_type
495 </p>
496 </th>
497 <th>
498 <p>
499 interval_default
500 </p>
501 </th>
502 </tr></thead>
503 <tbody>
504 <tr>
505 <td>
506 <p>
507 <code class="computeroutput"><span class="preprocessor">#ifdef</span></code> BOOST_ICL_USE_STATIC_BOUNDED_INTERVALS
508 </p>
509 </td>
510 <td>
511 <p>
512 static
513 </p>
514 </td>
515 <td>
516 <p>
517 </p>
518 </td>
519 <td>
520 <p>
521 <code class="computeroutput"><a class="link" href="../boost/icl/right_open_interval.html" title="Class template right_open_interval">right_open_interval</a></code>
522 </p>
523 </td>
524 </tr>
525 <tr>
526 <td>
527 <p>
528 <code class="computeroutput"><span class="preprocessor">#else</span></code>
529 </p>
530 </td>
531 <td>
532 <p>
533 dynamic
534 </p>
535 </td>
536 <td>
537 <p>
538 discrete
539 </p>
540 </td>
541 <td>
542 <p>
543 <code class="computeroutput"><a class="link" href="../boost/icl/discrete_interval.html" title="Class template discrete_interval">discrete_interval</a></code>
544 </p>
545 </td>
546 </tr>
547 <tr>
548 <td>
549 <p>
550 </p>
551 </td>
552 <td>
553 <p>
554 </p>
555 </td>
556 <td>
557 <p>
558 continuous
559 </p>
560 </td>
561 <td>
562 <p>
563 <code class="computeroutput"><a class="link" href="../boost/icl/continuous_interval.html" title="Class template continuous_interval">continuous_interval</a></code>
564 </p>
565 </td>
566 </tr>
567 </tbody>
568 </table></div>
569 <p>
570 So, if you are always happy with the library default for the interval type,
571 just use
572 </p>
573 <pre class="programlisting"><span class="identifier">icl</span><span class="special">::</span><span class="identifier">interval</span><span class="special">&lt;</span><span class="identifier">MyDomainT</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">myInterval</span><span class="special">;</span>
574 </pre>
575 <p>
576 as you standard way of declaring intervals and default parameters for interval
577 containers:
578 </p>
579 <pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">interval_set</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&gt;</span> <span class="identifier">IdentifiersT</span><span class="special">;</span>
580 <span class="identifier">IdentifiersT</span> <span class="identifier">identifiers</span><span class="special">,</span> <span class="identifier">excluded</span><span class="special">;</span>
581 <span class="identifier">identifiers</span> <span class="special">+=</span> <span class="identifier">interval</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&gt;::</span><span class="identifier">right_open</span><span class="special">(</span><span class="string">"a"</span><span class="special">,</span> <span class="string">"c"</span><span class="special">);</span>
582 <span class="special">.</span> <span class="special">.</span> <span class="special">.</span>
583 </pre>
584 <p>
585 </p>
586 <p>
587 So class template <code class="computeroutput"><a class="link" href="../boost/icl/interval.html" title="Struct template interval">interval</a></code>
588 provides a standard way to work with the library default for intervals.
589 Via <code class="computeroutput"><span class="identifier">interval</span><span class="special">&lt;</span><span class="identifier">D</span><span class="special">,</span><span class="identifier">C</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
590 you can declare a default interval. In addition four static functions
591 </p>
592 <pre class="programlisting"><span class="identifier">T</span> <span class="identifier">interval</span><span class="special">&lt;</span><span class="identifier">D</span><span class="special">,</span><span class="identifier">C</span><span class="special">&gt;::</span><span class="identifier">right_open</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">D</span><span class="special">&amp;,</span> <span class="keyword">const</span> <span class="identifier">D</span><span class="special">&amp;);</span>
593 <span class="identifier">T</span> <span class="identifier">interval</span><span class="special">&lt;</span><span class="identifier">D</span><span class="special">,</span><span class="identifier">C</span><span class="special">&gt;::</span><span class="identifier">left_open</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">D</span><span class="special">&amp;,</span> <span class="keyword">const</span> <span class="identifier">D</span><span class="special">&amp;);</span>
594 <span class="identifier">T</span> <span class="identifier">interval</span><span class="special">&lt;</span><span class="identifier">D</span><span class="special">,</span><span class="identifier">C</span><span class="special">&gt;::</span><span class="identifier">closed</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">D</span><span class="special">&amp;,</span> <span class="keyword">const</span> <span class="identifier">D</span><span class="special">&amp;);</span>
595 <span class="identifier">T</span> <span class="identifier">interval</span><span class="special">&lt;</span><span class="identifier">D</span><span class="special">,</span><span class="identifier">C</span><span class="special">&gt;::</span><span class="identifier">open</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">D</span><span class="special">&amp;,</span> <span class="keyword">const</span> <span class="identifier">D</span><span class="special">&amp;);</span>
596 </pre>
597 <p>
598 allow to construct intervals of the library default <code class="computeroutput"><span class="identifier">T</span>
599 <span class="special">=</span> <span class="identifier">interval</span><span class="special">&lt;</span><span class="identifier">D</span><span class="special">,</span><span class="identifier">C</span><span class="special">&gt;::</span><span class="identifier">type</span></code>.
600 </p>
601 <p>
602 If you
603 </p>
604 <pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_ICL_USE_STATIC_BOUNDED_INTERVALS</span>
605 </pre>
606 <p>
607 the library uses only statically bounded <code class="computeroutput"><a class="link" href="../boost/icl/right_open_interval.html" title="Class template right_open_interval">right_open_interval</a></code>
608 as default interval type. In this case, the four static functions above
609 are also available, but they only move interval borders consistently, if
610 their domain type is discrete, and create an appropriate <code class="computeroutput"><a class="link" href="../boost/icl/right_open_interval.html" title="Class template right_open_interval">right_open_interval</a></code>
611 finally:
612 </p>
613 <pre class="programlisting"><span class="identifier">interval</span><span class="special">&lt;</span><span class="identifier">D</span><span class="special">,</span><span class="identifier">C</span><span class="special">&gt;::</span><span class="identifier">right_open</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span><span class="identifier">b</span><span class="special">)</span> <span class="special">==</span> <span class="special">[</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">)</span> <span class="special">-&gt;</span> <span class="special">[</span><span class="identifier">a</span> <span class="special">,</span> <span class="identifier">b</span> <span class="special">)</span>
614 <span class="identifier">interval</span><span class="special">&lt;</span><span class="identifier">D</span><span class="special">,</span><span class="identifier">C</span><span class="special">&gt;::</span> <span class="identifier">left_open</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span><span class="identifier">b</span><span class="special">)</span> <span class="special">==</span> <span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">]</span> <span class="special">-&gt;</span> <span class="special">[</span><span class="identifier">a</span><span class="special">++,</span> <span class="identifier">b</span><span class="special">++)</span>
615 <span class="identifier">interval</span><span class="special">&lt;</span><span class="identifier">D</span><span class="special">,</span><span class="identifier">C</span><span class="special">&gt;::</span> <span class="identifier">closed</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span><span class="identifier">b</span><span class="special">)</span> <span class="special">==</span> <span class="special">[</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">]</span> <span class="special">-&gt;</span> <span class="special">[</span><span class="identifier">a</span> <span class="special">,</span> <span class="identifier">b</span><span class="special">++)</span>
616 <span class="identifier">interval</span><span class="special">&lt;</span><span class="identifier">D</span><span class="special">,</span><span class="identifier">C</span><span class="special">&gt;::</span> <span class="identifier">open</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span><span class="identifier">b</span><span class="special">)</span> <span class="special">==</span> <span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">)</span> <span class="special">-&gt;</span> <span class="special">[</span><span class="identifier">a</span><span class="special">++,</span> <span class="identifier">b</span> <span class="special">)</span>
617 </pre>
618 <p>
619 </p>
620 <p>
621 For continuous domain types only the first of the four functions is applicable
622 that matches the library default for statically bounded intervals: <code class="computeroutput"><a class="link" href="../boost/icl/right_open_interval.html" title="Class template right_open_interval">right_open_interval</a></code>.
623 The other three functions can not perform an appropriate tranformation
624 and will not compile.
625 </p>
626 </div>
627 <div class="section boost_icl_interface_class_templates_sets" lang="en">
628 <div class="titlepage"><div><div><h4 class="title">
629 <a name="boost_icl.interface.class_templates.sets"></a><a class="link" href="interface.html#boost_icl.interface.class_templates.sets" title="Sets">Sets</a>
630 </h4></div></div></div>
631 <p>
632 The next two tables give an overview over <span class="emphasis"><em><span class="bold"><strong>set
633 class templates</strong></span></em></span> of the icl.
634 </p>
635 <div class="table">
636 <a name="id1103191"></a><p class="title"><b>Table&#160;1.8.&#160;Set class templates</b></p>
637 <div class="table-contents"><table class="table" summary="Set class templates">
638 <colgroup>
639 <col>
640 <col>
641 <col>
642 </colgroup>
643 <thead><tr>
644 <th>
645 <p>
646 group
647 </p>
648 </th>
649 <th>
650 <p>
651 template
652 </p>
653 </th>
654 <th>
655 <p>
656 instance parameters
657 </p>
658 </th>
659 </tr></thead>
660 <tbody>
661 <tr>
662 <td>
663 <p>
664 <code class="computeroutput"><a class="link" href="../boost/icl/interval_base_set.html" title="Class template interval_base_set">interval_sets</a></code>
665 </p>
666 </td>
667 <td>
668 <p>
669 <code class="computeroutput"><a class="link" href="../boost/icl/interval_set.html" title="Class template interval_set">interval_set</a></code>
670 </p>
671 </td>
672 <td>
673 <p>
674 <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">DomainT</span><span class="special">,</span><span class="identifier">Compare</span><span class="special">,</span><span class="identifier">IntervalT</span><span class="special">,</span><span class="identifier">Alloc</span><span class="special">&gt;</span></code>
675 </p>
676 </td>
677 </tr>
678 <tr>
679 <td>
680 <p>
681 </p>
682 </td>
683 <td>
684 <p>
685 <code class="computeroutput"><a class="link" href="../boost/icl/separate_interval_set.html" title="Class template separate_interval_set">separate_interval_set</a></code>
686 </p>
687 </td>
688 <td>
689 <p>
690 <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">DomainT</span><span class="special">,</span><span class="identifier">Compare</span><span class="special">,</span><span class="identifier">IntervalT</span><span class="special">,</span><span class="identifier">Alloc</span><span class="special">&gt;</span></code>
691 </p>
692 </td>
693 </tr>
694 <tr>
695 <td>
696 <p>
697 </p>
698 </td>
699 <td>
700 <p>
701 <code class="computeroutput"><a class="link" href="../boost/icl/split_interval_set.html" title="Class template split_interval_set">split_interval_set</a></code>
702 </p>
703 </td>
704 <td>
705 <p>
706 <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">DomainT</span><span class="special">,</span><span class="identifier">Compare</span><span class="special">,</span><span class="identifier">IntervalT</span><span class="special">,</span><span class="identifier">Alloc</span><span class="special">&gt;</span></code>
707 </p>
708 </td>
709 </tr>
710 </tbody>
711 </table></div>
712 </div>
713 <br class="table-break"><p>
714 Templates and template parameters, given in the preceding table are described
715 in detail below. <code class="computeroutput"><a class="link" href="../boost/icl/interval_base_set.html" title="Class template interval_base_set">Interval_sets</a></code>
716 represent three class templates <code class="computeroutput"><a class="link" href="../boost/icl/interval_set.html" title="Class template interval_set">interval_set</a></code>,
717 <code class="computeroutput"><a class="link" href="../boost/icl/separate_interval_set.html" title="Class template separate_interval_set">separate_interval_set</a></code>
718 and <code class="computeroutput"><a class="link" href="../boost/icl/split_interval_set.html" title="Class template split_interval_set">split_interval_set</a></code>
719 that all have equal template parameters.
720 </p>
721 <div class="table">
722 <a name="id1104771"></a><p class="title"><b>Table&#160;1.9.&#160;Parameters of set class templates</b></p>
723 <div class="table-contents"><table class="table" summary="Parameters of set class templates">
724 <colgroup>
725 <col>
726 <col>
727 <col>
728 <col>
729 <col>
730 </colgroup>
731 <thead><tr>
732 <th>
733 <p>
734 </p>
735 </th>
736 <th>
737 <p>
738 type of elements
739 </p>
740 </th>
741 <th>
742 <p>
743 order of elements
744 </p>
745 </th>
746 <th>
747 <p>
748 type of intervals
749 </p>
750 </th>
751 <th>
752 <p>
753 memory allocation
754 </p>
755 </th>
756 </tr></thead>
757 <tbody>
758 <tr>
759 <td>
760 <p>
761 template parameter
762 </p>
763 </td>
764 <td>
765 <p>
766 <code class="computeroutput"><span class="keyword">class</span></code>
767 </p>
768 </td>
769 <td>
770 <p>
771 <code class="computeroutput"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span><span class="special">&gt;</span><span class="keyword">class</span></code>
772 </p>
773 </td>
774 <td>
775 <p>
776 <code class="computeroutput"><span class="keyword">class</span></code>
777 </p>
778 </td>
779 <td>
780 <p>
781 <code class="computeroutput"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span><span class="special">&gt;</span><span class="keyword">class</span></code>
782 </p>
783 </td>
784 </tr>
785 <tr>
786 <td>
787 <p>
788 <code class="computeroutput"><a class="link" href="../boost/icl/interval.html" title="Struct template interval">interval</a></code>
789 </p>
790 </td>
791 <td>
792 <p>
793 <code class="computeroutput"><span class="identifier">DomainT</span></code>
794 </p>
795 </td>
796 <td>
797 <p>
798 <code class="computeroutput"><span class="identifier">Compare</span> <span class="special">=</span>
799 <span class="identifier">std</span><span class="special">::</span><span class="identifier">less</span></code>
800 </p>
801 </td>
802 <td>
803 <p>
804 </p>
805 </td>
806 <td>
807 <p>
808 </p>
809 </td>
810 </tr>
811 <tr>
812 <td>
813 <p>
814 <code class="computeroutput"><a class="link" href="../boost/icl/interval_base_set.html" title="Class template interval_base_set">interval_sets</a></code>
815 </p>
816 </td>
817 <td>
818 <p>
819 <code class="computeroutput"><span class="identifier">DomainT</span></code>
820 </p>
821 </td>
822 <td>
823 <p>
824 <code class="computeroutput"><span class="identifier">Compare</span> <span class="special">=</span>
825 <span class="identifier">std</span><span class="special">::</span><span class="identifier">less</span></code>
826 </p>
827 </td>
828 <td>
829 <p>
830 <code class="computeroutput"><span class="identifier">IntervalT</span> <span class="special">=</span>
831 <span class="identifier">interval</span><span class="special">&lt;</span><span class="identifier">DomainT</span><span class="special">,</span><span class="identifier">Compare</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
832 </p>
833 </td>
834 <td>
835 <p>
836 <code class="computeroutput"><span class="identifier">Alloc</span> <span class="special">=</span>
837 <span class="identifier">std</span><span class="special">::</span><span class="identifier">alloc</span></code>
838 </p>
839 </td>
840 </tr>
841 </tbody>
842 </table></div>
843 </div>
844 <br class="table-break">
845 </div>
846 <div class="section boost_icl_interface_class_templates_maps" lang="en">
847 <div class="titlepage"><div><div><h4 class="title">
848 <a name="boost_icl.interface.class_templates.maps"></a><a class="link" href="interface.html#boost_icl.interface.class_templates.maps" title="Maps">Maps</a>
849 </h4></div></div></div>
850 <p>
851 The next two tables give an overview over <span class="emphasis"><em><span class="bold"><strong>map
852 class templates</strong></span></em></span> of the icl.
853 </p>
854 <div class="table">
855 <a name="id1105150"></a><p class="title"><b>Table&#160;1.10.&#160;map class templates</b></p>
856 <div class="table-contents"><table class="table" summary="map class templates">
857 <colgroup>
858 <col>
859 <col>
860 <col>
861 </colgroup>
862 <thead><tr>
863 <th>
864 <p>
865 group
866 </p>
867 </th>
868 <th>
869 <p>
870 template
871 </p>
872 </th>
873 <th>
874 <p>
875 instance parameters
876 </p>
877 </th>
878 </tr></thead>
879 <tbody>
880 <tr>
881 <td>
882 <p>
883 <code class="computeroutput"><a class="link" href="../boost/icl/interval_base_map.html" title="Class template interval_base_map">interval_maps</a></code>
884 </p>
885 </td>
886 <td>
887 <p>
888 <code class="computeroutput"><a class="link" href="../boost/icl/interval_map.html" title="Class template interval_map">interval_map</a></code>
889 </p>
890 </td>
891 <td>
892 <p>
893 <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">DomainT</span><span class="special">,</span><span class="identifier">CodomainT</span><span class="special">,</span><span class="identifier">Traits</span><span class="special">,</span><span class="identifier">Compare</span><span class="special">,</span><span class="identifier">Combine</span><span class="special">,</span><span class="identifier">Section</span><span class="special">,</span><span class="identifier">IntervalT</span><span class="special">,</span><span class="identifier">Alloc</span><span class="special">&gt;</span></code>
894 </p>
895 </td>
896 </tr>
897 <tr>
898 <td>
899 <p>
900 </p>
901 </td>
902 <td>
903 <p>
904 <code class="computeroutput"><a class="link" href="../boost/icl/split_interval_map.html" title="Class template split_interval_map">split_interval_map</a></code>
905 </p>
906 </td>
907 <td>
908 <p>
909 <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">DomainT</span><span class="special">,</span><span class="identifier">CodomainT</span><span class="special">,</span><span class="identifier">Traits</span><span class="special">,</span><span class="identifier">Compare</span><span class="special">,</span><span class="identifier">Combine</span><span class="special">,</span><span class="identifier">Section</span><span class="special">,</span><span class="identifier">IntervalT</span><span class="special">,</span><span class="identifier">Alloc</span><span class="special">&gt;</span></code>
910 </p>
911 </td>
912 </tr>
913 <tr>
914 <td>
915 <p>
916 <code class="computeroutput"><a class="link" href="../boost/icl/map.html" title="Class template map">icl::map</a></code>
917 </p>
918 </td>
919 <td>
920 <p>
921 <code class="computeroutput"><a class="link" href="../boost/icl/map.html" title="Class template map">icl::map</a></code>
922 </p>
923 </td>
924 <td>
925 <p>
926 <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">DomainT</span><span class="special">,</span><span class="identifier">CodomainT</span><span class="special">,</span><span class="identifier">Traits</span><span class="special">,</span><span class="identifier">Compare</span><span class="special">,</span><span class="identifier">Combine</span><span class="special">,</span><span class="identifier">Section</span><span class="special">,</span><span class="identifier">Alloc</span><span class="special">&gt;</span></code>
927 </p>
928 </td>
929 </tr>
930 </tbody>
931 </table></div>
932 </div>
933 <br class="table-break"><p>
934 Templates and template parameters, given in the preceding table are described
935 in detail below. <code class="computeroutput"><a class="link" href="../boost/icl/interval_base_map.html" title="Class template interval_base_map">Interval_maps</a></code>
936 represent two class templates <code class="computeroutput"><a class="link" href="../boost/icl/interval_map.html" title="Class template interval_map">interval_map</a></code>
937 and <code class="computeroutput"><a class="link" href="../boost/icl/split_interval_map.html" title="Class template split_interval_map">split_interval_map</a></code>
938 that all have equal template parameters.
939 </p>
940 <div class="table">
941 <a name="id1105511"></a><p class="title"><b>Table&#160;1.11.&#160;Parameters of map class templates</b></p>
942 <div class="table-contents"><table class="table" summary="Parameters of map class templates">
943 <colgroup>
944 <col>
945 <col>
946 <col>
947 <col>
948 <col>
949 <col>
950 <col>
951 <col>
952 </colgroup>
953 <thead><tr>
954 <th>
955 <p>
956 </p>
957 </th>
958 <th>
959 <p>
960 elements
961 </p>
962 </th>
963 <th>
964 <p>
965 mapped values
966 </p>
967 </th>
968 <th>
969 <p>
970 traits
971 </p>
972 </th>
973 <th>
974 <p>
975 order of elements
976 </p>
977 </th>
978 <th>
979 <p>
980 aggregation propagation
981 </p>
982 </th>
983 <th>
984 <p>
985 intersection propagation
986 </p>
987 </th>
988 <th>
989 <p>
990 type of intervals
991 </p>
992 </th>
993 <th>
994 <p>
995 memory allocation
996 </p>
997 </th>
998 </tr></thead>
999 <tbody>
1000 <tr>
1001 <td>
1002 <p>
1003 template parameter
1004 </p>
1005 </td>
1006 <td>
1007 <p>
1008 <code class="computeroutput"><span class="keyword">class</span></code>
1009 </p>
1010 </td>
1011 <td>
1012 <p>
1013 <code class="computeroutput"><span class="keyword">class</span></code>
1014 </p>
1015 </td>
1016 <td>
1017 <p>
1018 <code class="computeroutput"><span class="keyword">class</span></code>
1019 </p>
1020 </td>
1021 <td>
1022 <p>
1023 <code class="computeroutput"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span><span class="special">&gt;</span><span class="keyword">class</span></code>
1024 </p>
1025 </td>
1026 <td>
1027 <p>
1028 <code class="computeroutput"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span><span class="special">&gt;</span><span class="keyword">class</span></code>
1029 </p>
1030 </td>
1031 <td>
1032 <p>
1033 <code class="computeroutput"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span><span class="special">&gt;</span><span class="keyword">class</span></code>
1034 </p>
1035 </td>
1036 <td>
1037 <p>
1038 <code class="computeroutput"><span class="keyword">class</span></code>
1039 </p>
1040 </td>
1041 <td>
1042 <p>
1043 <code class="computeroutput"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span><span class="special">&gt;</span><span class="keyword">class</span></code>
1044 </p>
1045 </td>
1046 </tr>
1047 <tr>
1048 <td>
1049 <p>
1050 <code class="computeroutput"><a class="link" href="../boost/icl/interval_base_map.html" title="Class template interval_base_map">interval_maps</a></code>
1051 </p>
1052 </td>
1053 <td>
1054 <p>
1055 <code class="computeroutput"><span class="identifier">DomainT</span></code>
1056 </p>
1057 </td>
1058 <td>
1059 <p>
1060 <code class="computeroutput"><span class="identifier">CodomainT</span></code>
1061 </p>
1062 </td>
1063 <td>
1064 <p>
1065 <code class="computeroutput"><span class="identifier">Traits</span> <span class="special">=</span>
1066 <span class="identifier">identity_absorber</span></code>
1067 </p>
1068 </td>
1069 <td>
1070 <p>
1071 <code class="computeroutput"><span class="identifier">Compare</span> <span class="special">=</span>
1072 <span class="identifier">std</span><span class="special">::</span><span class="identifier">less</span></code>
1073 </p>
1074 </td>
1075 <td>
1076 <p>
1077 <code class="computeroutput"><span class="identifier">Combine</span> <span class="special">=</span>
1078 <span class="identifier">inplace_plus</span></code>
1079 </p>
1080 </td>
1081 <td>
1082 <p>
1083 <code class="computeroutput"><span class="identifier">Section</span> <span class="special">=</span>
1084 <span class="identifier">icl</span><span class="special">::</span><span class="identifier">inplace_et</span></code>
1085 </p>
1086 </td>
1087 <td>
1088 <p>
1089 <code class="computeroutput"><span class="identifier">IntervalT</span> <span class="special">=</span>
1090 <span class="identifier">interval</span><span class="special">&lt;</span><span class="identifier">DomainT</span><span class="special">,</span><span class="identifier">Compare</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
1091 </p>
1092 </td>
1093 <td>
1094 <p>
1095 <code class="computeroutput"><span class="identifier">Alloc</span> <span class="special">=</span>
1096 <span class="identifier">std</span><span class="special">::</span><span class="identifier">alloc</span></code>
1097 </p>
1098 </td>
1099 </tr>
1100 <tr>
1101 <td>
1102 <p>
1103 <code class="computeroutput"><a class="link" href="../boost/icl/map.html" title="Class template map">icl::map</a></code>
1104 </p>
1105 </td>
1106 <td>
1107 <p>
1108 <code class="computeroutput"><span class="identifier">DomainT</span></code>
1109 </p>
1110 </td>
1111 <td>
1112 <p>
1113 <code class="computeroutput"><span class="identifier">CodomainT</span></code>
1114 </p>
1115 </td>
1116 <td>
1117 <p>
1118 <code class="computeroutput"><span class="identifier">Traits</span> <span class="special">=</span>
1119 <span class="identifier">identity_absorber</span></code>
1120 </p>
1121 </td>
1122 <td>
1123 <p>
1124 <code class="computeroutput"><span class="identifier">Compare</span> <span class="special">=</span>
1125 <span class="identifier">std</span><span class="special">::</span><span class="identifier">less</span></code>
1126 </p>
1127 </td>
1128 <td>
1129 <p>
1130 <code class="computeroutput"><span class="identifier">Combine</span> <span class="special">=</span>
1131 <span class="identifier">inplace_plus</span></code>
1132 </p>
1133 </td>
1134 <td>
1135 <p>
1136 <code class="computeroutput"><span class="identifier">Section</span> <span class="special">=</span>
1137 <span class="identifier">icl</span><span class="special">::</span><span class="identifier">inplace_et</span></code>
1138 </p>
1139 </td>
1140 <td>
1141 <p>
1142 <code class="computeroutput"><span class="identifier">Alloc</span> <span class="special">=</span>
1143 <span class="identifier">std</span><span class="special">::</span><span class="identifier">alloc</span></code>
1144 </p>
1145 </td>
1146 <td class="auto-generated">&#160;</td>
1147 </tr>
1148 </tbody>
1149 </table></div>
1150 </div>
1151 <br class="table-break"><p>
1152 Using the following placeholders,
1153 </p>
1154 <p>
1155
1156 </p>
1157 <pre class="programlisting"><span class="identifier">D</span> <span class="special">:=</span> <span class="keyword">class</span> <span class="identifier">DomainT</span><span class="special">,</span>
1158 <span class="identifier">C</span> <span class="special">:=</span> <span class="keyword">class</span> <span class="identifier">CodomainT</span><span class="special">,</span>
1159 <span class="identifier">T</span> <span class="special">:=</span> <span class="keyword">class</span> <span class="identifier">Traits</span><span class="special">,</span>
1160 <span class="identifier">cp</span> <span class="special">:=</span> <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">D</span><span class="special">&gt;</span><span class="keyword">class</span> <span class="identifier">Compare</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">less</span><span class="special">,</span>
1161 <span class="identifier">cb</span> <span class="special">:=</span> <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">C</span><span class="special">&gt;</span><span class="keyword">class</span> <span class="identifier">Combine</span> <span class="special">=</span> <span class="identifier">icl</span><span class="special">::</span><span class="identifier">inplace_plus</span><span class="special">,</span>
1162 <span class="identifier">s</span> <span class="special">:=</span> <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">C</span><span class="special">&gt;</span><span class="keyword">class</span> <span class="identifier">Section</span> <span class="special">=</span> <span class="identifier">icl</span><span class="special">::</span><span class="identifier">inplace_et</span><span class="special">,</span>
1163 <span class="identifier">I</span> <span class="special">:=</span> <span class="keyword">class</span> <span class="identifier">IntervalT</span> <span class="special">=</span> <span class="identifier">icl</span><span class="special">::</span><span class="identifier">interval</span><span class="special">&lt;</span><span class="identifier">D</span><span class="special">,</span><span class="identifier">cp</span><span class="special">&gt;::</span><span class="identifier">type</span>
1164 <span class="identifier">a</span> <span class="special">:=</span> <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span><span class="special">&gt;</span><span class="keyword">class</span> <span class="identifier">Alloc</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span>
1165 </pre>
1166 <p>
1167 </p>
1168 <p>
1169 we arrive at a final synoptical matrix of class templates and their parameters.
1170 </p>
1171 <pre class="programlisting">interval &lt;D, cp, &gt;
1172 interval_sets&lt;D, cp, I, a &gt;
1173 interval_maps&lt;D, C, T, cp, cb, s, I, a &gt;
1174 icl::map &lt;D, C, T, cp, cb, s, a &gt;
1175 </pre>
1176 <p>
1177 The choice of parameters and their positions follow the std::containers
1178 as close a possible, so that usage of interval sets and maps does only
1179 require minimal additional knowledge.
1180 </p>
1181 <p>
1182 Additional knowledge is required when instantiating a comparison parameter
1183 <code class="computeroutput"><span class="identifier">Compare</span></code> or an allocation
1184 parameter <code class="computeroutput"><span class="identifier">Alloc</span></code>. In contrast
1185 to std::containers these have to be instantiated as templates, like e.g.
1186
1187 </p>
1188 <pre class="programlisting"><span class="identifier">interval_set</span><span class="special">&lt;</span><span class="identifier">string</span><span class="special">,</span> <span class="identifier">german_compare</span><span class="special">&gt;</span> <span class="identifier">sections</span><span class="special">;</span> <span class="comment">// 2nd parameter is a template
1189 </span><span class="identifier">std</span><span class="special">::</span><span class="identifier">set</span><span class="special">&lt;</span><span class="identifier">string</span><span class="special">,</span> <span class="identifier">german_compare</span><span class="special">&lt;</span><span class="identifier">string</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">words</span><span class="special">;</span> <span class="comment">// 2nd parameter is a type
1190 </span></pre>
1191 <p>
1192 </p>
1193 </div>
1194 </div>
1195 </div>
1196 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
1197 <td align="left"></td>
1198 <td align="right"><div class="copyright-footer">Copyright &#169; 2007 -2010 Joachim Faulhaber<br>Copyright &#169; 1999 -2006 Cortex Software GmbH<p>
1199 Distributed under the Boost Software License, Version 1.0. (See accompanying
1200 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>)
1201 </p>
1202 </div></td>
1203 </tr></table>
1204 <hr>
1205 <div class="spirit-nav">
1206 <a accesskey="p" href="semantics/concept_induction.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="interface/required_concepts.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
1207 </div>
1208 </body>
1209 </html>