Back to Arangodb

Tuples

3rdParty/boost/1.78.0/libs/spirit/classic/phoenix/doc/tuples.html

3.12.9.12.6 KB
Original Source

| | Tuples | |

| | | |

Tuples are the most basic infrastructure that the framework builds with. This sub-library provides a mechanism to bundle objects of arbitrary types in a single structure. Tuples hold heterogeneous types up to a predefined maximum.

Only the most basic functionality needed are provided. This is a straight-forward and extremely lean and mean library. Unlike other recursive list-like tuple implementations, this tuple library implementation uses simple structs similar to std::pair with specialization for 0 to N tuple elements, where N is a predefined constant. There are only 4 tuple operations to learn:

  1. Construction

Here are examples on how to construct tuples:

` typedef tuple<int, char> t1_t; typedef tuple<int, std::string, double> t2_t;

// this tuple has an int and char members
t1_t t1(3, 'c');

// this tuple has an int, std::string and double members
t2_t t2(3, "hello", 3.14);

`

  1. Member access

A member in a tuple can be accessed using the tuple's operator by specifying the Nth tuple_index. Here are some examples:

` tuple_index<0> ix0; // 0th index == 1st item tuple_index<1> ix1; // 1st index == 2nd item tuple_index<2> ix2; // 2nd index == 3rd item

// Note zero based indexing. 0 = 1st item, 1 = 2nd item

t1[ix0] = 33; // sets the int member of the tuple t1
t2[ix2] = 6e6; // sets the double member of the tuple t2
t1[ix1] = 'a'; // sets the char member of the tuple t1

`

Access to out of bound indexes returns a nil_t value.

  1. Member type inquiry

The type of an individual member can be queried. Example:

tuple_element<1, t2_t>::type

Refers to the type of the second member (again note zero based indexing, hence 0 = 1st item, 1 = 2nd item) of the tuple.

Access to out of bound indexes returns a nil_t type.

  1. Tuple length

The number of elements in a tuple can be queried. Example:

int n = t1.length;

gets the number of elements in tuple t1.

length is a static constant. Thus, TupleT::length also works. Example:

int n = t1_t::length;

| | | |


Copyright © 2001-2002 Joel de Guzman

Use, modification and distribution is subject to the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE\_1\_0.txt)