\( \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.3 - 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:

  DefaultConstructible

  CopyConstructible

  Assignable

  EqualityComparable

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.