## CGAL::Triple<T1, T2, T3>

### Definition

The Triple class is an extension of std::pair. Triple<T1, T2, T3> is a heterogeneous triple: it holds one object of type T1, one of type T2, and one of type T3. A Triple<T1, T2, T3> is much like a container, in that it "owns" its elements. It is not actually a model of container, though, because it does not support the standard methods (such as iterators) for accessing the elements of a container.

#include <CGAL/utility.h>

### Requirements

T1, T2 and T3 must be assignable. Additional operations have additional requirements.

### Types

typedef T1 | first_type;
typedef T2 | second_type;
typedef T3 | third_type;

### Variables

T1 | first; | first element
T2 | second; | second element
T3 | third; | third element

### Creation

Triple<T1, T2, T3> t;
| introduces a triple using the default constructor of the three elements.
Triple<T1, T2, T3> t ( T1 x, T2 y, T3 z);
| constructs a triple such that first is constructed from x, second is constructed from y, and third is constructed from z.
template <class U, class V, class W>
Triple<T1, T2, T3> t ( U u, V v, W w);
| constructs a triple such that first is constructed from u, second is constructed from v, and third is constructed from w. Requirement: Proper conversion operators exist from U to T1, V to T2, and W to T3.

template <class T1, class T2, class T3>

bool

x < y

The comparison operator. It uses lexicographic comparison: the return value is true if the first element of x is less than the first element of y, and false if the first element of y is less than the first element of x. If neither of these is the case, then it returns true if the second element of x is less than the second element of y, and false if the second element of y is less than the second element of x. If neither of these is the case, then it returns the result of comparing the third elements of x and y. This operator may only be used if T1, T2 and T3 define the comparison operator.

template <class T1, class T2, class T3>
bool | x == y | The equality operator. The return value is true if and only the first elements of x and y are equal, the second elements of x and y are equal, and the third elements of x and y are equal. This operator may only be used if T1, T2 and T3 define the equality operator.
template <class T1, class T2, class T3>
Triple<T1, T2, T3> | make_triple ( T1 x, T2 y, T3 z)
|  | Equivalent to Triple<T1, T2, T3>(x, y, z).