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