3 // 2007-02-04 Benjamin Kosnik <bkoz@redhat.com>
5 // Copyright (C) 2007, 2009 Free Software Foundation, Inc.
7 // This file is part of the GNU ISO C++ Library. This library is free
8 // software; you can redistribute it and/or modify it under the
9 // terms of the GNU General Public License as published by the
10 // Free Software Foundation; either version 3, or (at your option)
13 // This library is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 // GNU General Public License for more details.
18 // You should have received a copy of the GNU General Public License
19 // along with this library; see the file COPYING3. If not see
20 // <http://www.gnu.org/licenses/>.
28 // [6.1.3] Class template tuple
29 template <class T1 = unspecified ,
30 class T2 = unspecified ,
32 class TM = unspecified > class tuple;
34 // [6.1.3.2] Tuple creation functions
35 const unspecified ignore;
36 template<class T1, class T2, ..., class TN>
37 tuple<V1, V2, ..., VN> make_tuple(const T1&, const T2& , ..., const TN&);
39 template<class T1, class T2, ..., class TN>
40 tuple<T1&, T2&, ..., TN&> tie(T1&, T2& , ..., TN&);
43 // [6.1.3.3] Tuple helper classes
44 template <class T> class tuple_size;
45 template <int I, class T> class tuple_element;
48 // [6.1.3.4] Element access
49 template <int I, class T1, class T2, ..., class TN>
50 RJ get(tuple<T1, T2, ..., TN>&);
51 template <int I, class T1, class T2, ..., class TN>
52 PJ get(const tuple<T1, T2, ..., TN>&);
54 // [6.1.3.5] relational operators
55 template<class T1, class T2, ..., class TM, class U1, class U2, ..., class UM>
56 bool operator==(const tuple<T1, T2, ..., TM>&, const tuple<U1, U2, ..., UM>&);
57 template<class T1, class T2, ..., class TM, class U1, class U2, ..., class UM>
58 bool operator<(const tuple<T1, T2, ..., TM>&, const tuple<U1, U2, ..., UM>&);
59 template<class T1, class T2, ..., class TM, class U1, class U2, ..., class UM>
60 bool operator!=(const tuple<T1, T2, ..., TM>&, const tuple<U1, U2, ..., UM>&);
61 template<class T1, class T2, ..., class TM, class U1, class U2, ..., class UM>
62 bool operator>(const tuple<T1, T2, ..., TM>&, const tuple<U1, U2, ..., UM>&);
63 template<class T1, class T2, ..., class TM, class U1, class U2, ..., class UM>
64 bool operator<=(const tuple<T1, T2, ..., TM>&, const tuple<U1, U2, ..., UM>&);
65 template<class T1, class T2, ..., class TM, class U1, class U2, ..., class UM>
66 bool operator>=(const tuple<T1, T2, ..., TM>&, const tuple<U1, U2, ..., UM>&);