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