## CGAL::Quadruple<T1, T2, T3, T4>

### Definition

The Quadruple class is an extension of std::pair. Quadruple<T1, T2, T3, T4> is a heterogeneous quadruple: it holds one object of type T1, one of type T2, one of type T3, and one of type T4. A Quadruple<T1, T2, T3, T4> 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, T3 and T4 must be assignable. Additional operations have additional requirements.

### Types

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

### Variables

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

### Creation

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

template <class T1, class T2, class T3, class T4>

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 true if the third element of x is less than the third element of y, and false if the third element of y is less than the third element of x. If neither of these is the case, then it returns the result of comparing the fourth elements of x and y. This operator may only be used if T1, T2, T3, and T4 define the comparison operator.

template <class T1, class T2, class T3, class T4>
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, the third elements of x and y are equal, and the fourth elements of x and y are equal. This operator may only be used if T1, T2, T3, and T4 define the equality operator.
template <class T1, class T2, class T3, class T4>
Quadruple<T1, T2, T3, T4>
| make_quadruple ( T1 x, T2 y, T3 z, T4 w)
|  | Equivalent to Quadruple<T1, T2, T3, T4>(x, y, z, w).