\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)

CGAL 4.8 - Handles and Circulators

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
List of all members
Handle Concept Reference
Concepts

## Definition

Most data structures in CGAL use the concept of `Handle` in their user interface to refer to the elements they store. This concept describes what is sometimes called a trivial iterator. A `Handle` is akin to a pointer to an object providing the dereference operator `operator*()` and member access `operator->()` but no increment or decrement operators like iterators. A `Handle` is intended to be used whenever the referenced object is not part of a logical sequence.

Like iterators, the handle can be passed as template argument to `std::iterators_traits` in order to extract its `value_type`, the type of the element pointed to. The `iterator_category` is `void`.

Refines:
  Descriptor

The default constructed object must be unique as far as the equality operator is concerned (this serves the same purpose as NULL for pointers). (Note that this is not a generally supported feature of iterators of standard containers.)

Has Models:

  T* (pointer)

  const T* (const pointers)

  `Iterator`

  `Circulator`

## Dereference
value_type & | operator* ()
| returns the object pointed to.
value_type * | operator-> ()
| returns a pointer to the object pointed to.