blob: 10d8a3ee047934aef219fa113681858e38fff513 [file] [log] [blame]
Marco Poletti36253c92015-07-19 17:12:47 +01001/*
2 * Copyright 2014 Google Inc. All rights reserved.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
Marco Poletti1b959ab2017-12-27 09:23:44 +00007 *
Marco Poletti36253c92015-07-19 17:12:47 +01008 * http://www.apache.org/licenses/LICENSE-2.0
Marco Poletti1b959ab2017-12-27 09:23:44 +00009 *
Marco Poletti36253c92015-07-19 17:12:47 +010010 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef FRUIT_META_PAIR_H
18#define FRUIT_META_PAIR_H
19
Marco Polettif2895102016-01-30 13:38:37 +000020#include <fruit/impl/meta/basics.h>
Marco Poletti36253c92015-07-19 17:12:47 +010021
22namespace fruit {
23namespace impl {
24namespace meta {
25
26template <typename First1, typename Second1>
27struct Pair {
28 using First = First1;
29 using Second = Second1;
30};
31
32struct MakePair {
33 template <typename First, typename Second>
34 struct apply {
35 using type = Pair<First, Second>;
36 };
37};
38
39struct GetFirst {
40 template <typename P>
41 struct apply {
42 using type = typename P::First;
43 };
44};
45
46struct GetSecond {
47 template <typename P>
48 struct apply {
49 using type = typename P::Second;
50 };
51};
52
53} // namespace meta
54} // namespace impl
55} // namespace fruit
56
Marco Poletti36253c92015-07-19 17:12:47 +010057#endif // FRUIT_META_PAIR_H