]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/boost/functional/value_factory.hpp
import new upstream nautilus stable release 14.2.8
[ceph.git] / ceph / src / boost / boost / functional / value_factory.hpp
CommitLineData
92f5a8d4
TL
1/*
2Copyright 2007 Tobias Schwinger
3
4Copyright 2019 Glen Joseph Fernandes
5(glenjofe@gmail.com)
6
7Distributed under the Boost Software License, Version 1.0.
8(http://www.boost.org/LICENSE_1_0.txt)
9*/
10#ifndef BOOST_FUNCTIONAL_VALUE_FACTORY_HPP
11#define BOOST_FUNCTIONAL_VALUE_FACTORY_HPP
12
13#include <boost/config.hpp>
14#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && \
15 !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
16#include <utility>
17#endif
18
19namespace boost {
20
21template<class T>
22class value_factory;
23
24template<class T>
25class value_factory {
26public:
27 typedef T result_type;
28
29#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && \
30 !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
31 template<class... Args>
32 result_type operator()(Args&&... args) const {
33 return result_type(std::forward<Args>(args)...);
34 }
35#else
36 result_type operator()() const {
37 return result_type();
38 }
39
40 template<class A0>
41 result_type operator()(A0& a0) const {
42 return result_type(a0);
43 }
44
45 template<class A0, class A1>
46 result_type operator()(A0& a0, A1& a1) const {
47 return result_type(a0, a1);
48 }
49
50 template<class A0, class A1, class A2>
51 result_type operator()(A0& a0, A1& a1, A2& a2) const {
52 return result_type(a0, a1, a2);
53 }
54
55 template<class A0, class A1, class A2, class A3>
56 result_type operator()(A0& a0, A1& a1, A2& a2, A3& a3) const {
57 return result_type(a0, a1, a2, a3);
58 }
59
60 template<class A0, class A1, class A2, class A3, class A4>
61 result_type operator()(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4) const {
62 return result_type(a0, a1, a2, a3, a4);
63 }
64
65 template<class A0, class A1, class A2, class A3, class A4, class A5>
66 result_type operator()(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4,
67 A5& a5) const {
68 return result_type(a0, a1, a2, a3, a4, a5);
69 }
70
71 template<class A0, class A1, class A2, class A3, class A4, class A5,
72 class A6>
73 result_type operator()(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5,
74 A6& a6) const {
75 return result_type(a0, a1, a2, a3, a4, a5, a6);
76 }
77
78 template<class A0, class A1, class A2, class A3, class A4, class A5,
79 class A6, class A7>
80 result_type operator()(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5,
81 A6& a6, A7& a7) const {
82 return result_type(a0, a1, a2, a3, a4, a5, a6, a7);
83 }
84
85 template<class A0, class A1, class A2, class A3, class A4, class A5,
86 class A6, class A7, class A8>
87 result_type operator()(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5,
88 A6& a6, A7& a7, A8& a8) const {
89 return result_type(a0, a1, a2, a3, a4, a5, a6, a7, a8);
90 }
91
92 template<class A0, class A1, class A2, class A3, class A4, class A5,
93 class A6, class A7, class A8, class A9>
94 result_type operator()(A0& a0, A1& a1, A2& a2, A3& a3, A4& a4, A5& a5,
95 A6& a6, A7& a7, A8& a8, A9& a9) const {
96 return result_type(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
7c673cae 97 }
92f5a8d4
TL
98#endif
99};
7c673cae 100
92f5a8d4
TL
101template<class T>
102class value_factory<T&> { };
7c673cae 103
92f5a8d4 104} /* boost */
7c673cae 105
92f5a8d4 106#endif