Sacado Package Browser (Single Doxygen Collection)  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Sacado_mpl_placeholders.hpp
Go to the documentation of this file.
1 // @HEADER
2 // *****************************************************************************
3 // Sacado Package
4 //
5 // Copyright 2006 NTESS and the Sacado contributors.
6 // SPDX-License-Identifier: LGPL-2.1-or-later
7 // *****************************************************************************
8 // @HEADER
9 
10 #ifndef SACADO_MPL_PLACEHOLDERS_HPP
11 #define SACADO_MPL_PLACEHOLDERS_HPP
12 
13 #include "Sacado_mpl_none.hpp"
14 
15 namespace Sacado {
16 
17  namespace mpl {
18 
19  // Placeholder definitions
20  template <int N> struct arg {};
21 
22  template <> struct arg<1> {
23  template <class A1,
24  class A2=mpl::none,
25  class A3=mpl::none,
26  class A4=mpl::none,
27  class A5=mpl::none>
28  struct apply {
29  typedef A1 type;
30  };
31  };
32  template <> struct arg<2> {
33  template <class A1,
34  class A2,
35  class A3=mpl::none,
36  class A4=mpl::none,
37  class A5=mpl::none>
38  struct apply {
39  typedef A2 type;
40  };
41  };
42  template <> struct arg<3> {
43  template <class A1,
44  class A2,
45  class A3,
46  class A4=mpl::none,
47  class A5=mpl::none>
48  struct apply {
49  typedef A3 type;
50  };
51  };
52  template <> struct arg<4> {
53  template <class A1,
54  class A2,
55  class A3,
56  class A4,
57  class A5=mpl::none>
58  struct apply {
59  typedef A4 type;
60  };
61  };
62  template <> struct arg<5> {
63  template <class A1,
64  class A2,
65  class A3,
66  class A4,
67  class A5>
68  struct apply {
69  typedef A5 type;
70  };
71  };
72 
73  // Placeholder synonyms
74  namespace placeholders {
75  typedef arg<1> _1;
76  typedef arg<2> _2;
77  typedef arg<3> _3;
78  typedef arg<4> _4;
79  typedef arg<5> _5;
80  typedef arg<-1> _;
81  } // namespace placeholders
82 
83  } // namespace mpl
84 
85 } // namespace Sacado
86 
87 #endif // SACADO_MPL_PLACEHOLDERS_HPP