]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/flyweight/include/boost/flyweight/detail/pp_perfect_fwd.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / flyweight / include / boost / flyweight / detail / pp_perfect_fwd.hpp
CommitLineData
7c673cae
FG
1/* Copyright 2006-2014 Joaquin M Lopez Munoz.
2 * Distributed under the Boost Software License, Version 1.0.
3 * (See accompanying file LICENSE_1_0.txt or copy at
4 * http://www.boost.org/LICENSE_1_0.txt)
5 *
6 * See http://www.boost.org/libs/flyweight for library home page.
7 */
8
9#ifndef BOOST_FLYWEIGHT_DETAIL_PP_PERFECT_FWD_HPP
10#define BOOST_FLYWEIGHT_DETAIL_PP_PERFECT_FWD_HPP
11
12#if defined(_MSC_VER)
13#pragma once
14#endif
15
16#include <boost/config.hpp>
17
18#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
19
20#define BOOST_FLYWEIGHT_PERFECT_FWD_0(name,body) \
21name()body((FORWARD)(0))
22
23#if BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS>=1
24#define BOOST_FLYWEIGHT_PERFECT_FWD_1(name,body) \
25template<typename T0> name(T0&& t0)body((FORWARD)(1))
26#endif
27
28#if BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS>=2
29#define BOOST_FLYWEIGHT_PERFECT_FWD_2(name,body) \
30template<typename T0,typename T1> name(T0&& t0,T1&& t1)body((FORWARD)(2))
31#endif
32
33#if BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS>=3
34#define BOOST_FLYWEIGHT_PERFECT_FWD_3(name,body) \
35template<typename T0,typename T1,typename T2> name(T0&& t0,T1&& t1,T2&& t2)body((FORWARD)(3))
36#endif
37
38#if BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS>=4
39#define BOOST_FLYWEIGHT_PERFECT_FWD_4(name,body) \
40template<typename T0,typename T1,typename T2,typename T3> name(T0&& t0,T1&& t1,T2&& t2,T3&& t3)body((FORWARD)(4))
41#endif
42
43#if BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS>=5
44#define BOOST_FLYWEIGHT_PERFECT_FWD_5(name,body) \
45template<typename T0,typename T1,typename T2,typename T3,typename T4> name(T0&& t0,T1&& t1,T2&& t2,T3&& t3,T4&& t4)body((FORWARD)(5))
46#endif
47
48#else
49
50/* no rvalue refs -> [const] Tn& overloads */
51
52#define BOOST_FLYWEIGHT_PERFECT_FWD_0(name,body) \
53name()body((ENUM)(0))
54
55#if BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS>=1
56#define BOOST_FLYWEIGHT_PERFECT_FWD_1(name,body) \
57template<typename T0> name(T0& t0)body((ENUM)(1))\
58template<typename T0> name(const T0& t0)body((ENUM)(1))
59#endif
60
61#if BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS>=2
62#define BOOST_FLYWEIGHT_PERFECT_FWD_2(name,body) \
63template<typename T0,typename T1> name(T0& t0,T1& t1)body((ENUM)(2))\
64template<typename T0,typename T1> name(T0& t0,const T1& t1)body((ENUM)(2))\
65template<typename T0,typename T1> name(const T0& t0,T1& t1)body((ENUM)(2))\
66template<typename T0,typename T1> name(const T0& t0,const T1& t1)body((ENUM)(2))
67#endif
68
69#if BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS>=3
70#define BOOST_FLYWEIGHT_PERFECT_FWD_3(name,body) \
71template<typename T0,typename T1,typename T2> name(T0& t0,T1& t1,T2& t2)body((ENUM)(3))\
72template<typename T0,typename T1,typename T2> name(T0& t0,T1& t1,const T2& t2)body((ENUM)(3))\
73template<typename T0,typename T1,typename T2> name(T0& t0,const T1& t1,T2& t2)body((ENUM)(3))\
74template<typename T0,typename T1,typename T2> name(T0& t0,const T1& t1,const T2& t2)body((ENUM)(3))\
75template<typename T0,typename T1,typename T2> name(const T0& t0,T1& t1,T2& t2)body((ENUM)(3))\
76template<typename T0,typename T1,typename T2> name(const T0& t0,T1& t1,const T2& t2)body((ENUM)(3))\
77template<typename T0,typename T1,typename T2> name(const T0& t0,const T1& t1,T2& t2)body((ENUM)(3))\
78template<typename T0,typename T1,typename T2> name(const T0& t0,const T1& t1,const T2& t2)body((ENUM)(3))
79#endif
80
81#if BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS>=4
82#define BOOST_FLYWEIGHT_PERFECT_FWD_4(name,body) \
83template<typename T0,typename T1,typename T2,typename T3> name(T0& t0,T1& t1,T2& t2,T3& t3)body((ENUM)(4))\
84template<typename T0,typename T1,typename T2,typename T3> name(T0& t0,T1& t1,T2& t2,const T3& t3)body((ENUM)(4))\
85template<typename T0,typename T1,typename T2,typename T3> name(T0& t0,T1& t1,const T2& t2,T3& t3)body((ENUM)(4))\
86template<typename T0,typename T1,typename T2,typename T3> name(T0& t0,T1& t1,const T2& t2,const T3& t3)body((ENUM)(4))\
87template<typename T0,typename T1,typename T2,typename T3> name(T0& t0,const T1& t1,T2& t2,T3& t3)body((ENUM)(4))\
88template<typename T0,typename T1,typename T2,typename T3> name(T0& t0,const T1& t1,T2& t2,const T3& t3)body((ENUM)(4))\
89template<typename T0,typename T1,typename T2,typename T3> name(T0& t0,const T1& t1,const T2& t2,T3& t3)body((ENUM)(4))\
90template<typename T0,typename T1,typename T2,typename T3> name(T0& t0,const T1& t1,const T2& t2,const T3& t3)body((ENUM)(4))\
91template<typename T0,typename T1,typename T2,typename T3> name(const T0& t0,T1& t1,T2& t2,T3& t3)body((ENUM)(4))\
92template<typename T0,typename T1,typename T2,typename T3> name(const T0& t0,T1& t1,T2& t2,const T3& t3)body((ENUM)(4))\
93template<typename T0,typename T1,typename T2,typename T3> name(const T0& t0,T1& t1,const T2& t2,T3& t3)body((ENUM)(4))\
94template<typename T0,typename T1,typename T2,typename T3> name(const T0& t0,T1& t1,const T2& t2,const T3& t3)body((ENUM)(4))\
95template<typename T0,typename T1,typename T2,typename T3> name(const T0& t0,const T1& t1,T2& t2,T3& t3)body((ENUM)(4))\
96template<typename T0,typename T1,typename T2,typename T3> name(const T0& t0,const T1& t1,T2& t2,const T3& t3)body((ENUM)(4))\
97template<typename T0,typename T1,typename T2,typename T3> name(const T0& t0,const T1& t1,const T2& t2,T3& t3)body((ENUM)(4))\
98template<typename T0,typename T1,typename T2,typename T3> name(const T0& t0,const T1& t1,const T2& t2,const T3& t3)body((ENUM)(4))
99#endif
100
101#if BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS>=5
102#define BOOST_FLYWEIGHT_PERFECT_FWD_5(name,body) \
103template<typename T0,typename T1,typename T2,typename T3,typename T4> name(T0& t0,T1& t1,T2& t2,T3& t3,T4& t4)body((ENUM)(5))\
104template<typename T0,typename T1,typename T2,typename T3,typename T4> name(T0& t0,T1& t1,T2& t2,T3& t3,const T4& t4)body((ENUM)(5))\
105template<typename T0,typename T1,typename T2,typename T3,typename T4> name(T0& t0,T1& t1,T2& t2,const T3& t3,T4& t4)body((ENUM)(5))\
106template<typename T0,typename T1,typename T2,typename T3,typename T4> name(T0& t0,T1& t1,T2& t2,const T3& t3,const T4& t4)body((ENUM)(5))\
107template<typename T0,typename T1,typename T2,typename T3,typename T4> name(T0& t0,T1& t1,const T2& t2,T3& t3,T4& t4)body((ENUM)(5))\
108template<typename T0,typename T1,typename T2,typename T3,typename T4> name(T0& t0,T1& t1,const T2& t2,T3& t3,const T4& t4)body((ENUM)(5))\
109template<typename T0,typename T1,typename T2,typename T3,typename T4> name(T0& t0,T1& t1,const T2& t2,const T3& t3,T4& t4)body((ENUM)(5))\
110template<typename T0,typename T1,typename T2,typename T3,typename T4> name(T0& t0,T1& t1,const T2& t2,const T3& t3,const T4& t4)body((ENUM)(5))\
111template<typename T0,typename T1,typename T2,typename T3,typename T4> name(T0& t0,const T1& t1,T2& t2,T3& t3,T4& t4)body((ENUM)(5))\
112template<typename T0,typename T1,typename T2,typename T3,typename T4> name(T0& t0,const T1& t1,T2& t2,T3& t3,const T4& t4)body((ENUM)(5))\
113template<typename T0,typename T1,typename T2,typename T3,typename T4> name(T0& t0,const T1& t1,T2& t2,const T3& t3,T4& t4)body((ENUM)(5))\
114template<typename T0,typename T1,typename T2,typename T3,typename T4> name(T0& t0,const T1& t1,T2& t2,const T3& t3,const T4& t4)body((ENUM)(5))\
115template<typename T0,typename T1,typename T2,typename T3,typename T4> name(T0& t0,const T1& t1,const T2& t2,T3& t3,T4& t4)body((ENUM)(5))\
116template<typename T0,typename T1,typename T2,typename T3,typename T4> name(T0& t0,const T1& t1,const T2& t2,T3& t3,const T4& t4)body((ENUM)(5))\
117template<typename T0,typename T1,typename T2,typename T3,typename T4> name(T0& t0,const T1& t1,const T2& t2,const T3& t3,T4& t4)body((ENUM)(5))\
118template<typename T0,typename T1,typename T2,typename T3,typename T4> name(T0& t0,const T1& t1,const T2& t2,const T3& t3,const T4& t4)body((ENUM)(5))\
119template<typename T0,typename T1,typename T2,typename T3,typename T4> name(const T0& t0,T1& t1,T2& t2,T3& t3,T4& t4)body((ENUM)(5))\
120template<typename T0,typename T1,typename T2,typename T3,typename T4> name(const T0& t0,T1& t1,T2& t2,T3& t3,const T4& t4)body((ENUM)(5))\
121template<typename T0,typename T1,typename T2,typename T3,typename T4> name(const T0& t0,T1& t1,T2& t2,const T3& t3,T4& t4)body((ENUM)(5))\
122template<typename T0,typename T1,typename T2,typename T3,typename T4> name(const T0& t0,T1& t1,T2& t2,const T3& t3,const T4& t4)body((ENUM)(5))\
123template<typename T0,typename T1,typename T2,typename T3,typename T4> name(const T0& t0,T1& t1,const T2& t2,T3& t3,T4& t4)body((ENUM)(5))\
124template<typename T0,typename T1,typename T2,typename T3,typename T4> name(const T0& t0,T1& t1,const T2& t2,T3& t3,const T4& t4)body((ENUM)(5))\
125template<typename T0,typename T1,typename T2,typename T3,typename T4> name(const T0& t0,T1& t1,const T2& t2,const T3& t3,T4& t4)body((ENUM)(5))\
126template<typename T0,typename T1,typename T2,typename T3,typename T4> name(const T0& t0,T1& t1,const T2& t2,const T3& t3,const T4& t4)body((ENUM)(5))\
127template<typename T0,typename T1,typename T2,typename T3,typename T4> name(const T0& t0,const T1& t1,T2& t2,T3& t3,T4& t4)body((ENUM)(5))\
128template<typename T0,typename T1,typename T2,typename T3,typename T4> name(const T0& t0,const T1& t1,T2& t2,T3& t3,const T4& t4)body((ENUM)(5))\
129template<typename T0,typename T1,typename T2,typename T3,typename T4> name(const T0& t0,const T1& t1,T2& t2,const T3& t3,T4& t4)body((ENUM)(5))\
130template<typename T0,typename T1,typename T2,typename T3,typename T4> name(const T0& t0,const T1& t1,T2& t2,const T3& t3,const T4& t4)body((ENUM)(5))\
131template<typename T0,typename T1,typename T2,typename T3,typename T4> name(const T0& t0,const T1& t1,const T2& t2,T3& t3,T4& t4)body((ENUM)(5))\
132template<typename T0,typename T1,typename T2,typename T3,typename T4> name(const T0& t0,const T1& t1,const T2& t2,T3& t3,const T4& t4)body((ENUM)(5))\
133template<typename T0,typename T1,typename T2,typename T3,typename T4> name(const T0& t0,const T1& t1,const T2& t2,const T3& t3,T4& t4)body((ENUM)(5))\
134template<typename T0,typename T1,typename T2,typename T3,typename T4> name(const T0& t0,const T1& t1,const T2& t2,const T3& t3,const T4& t4)body((ENUM)(5))
135#endif
136
137#endif
138
139#if BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS==0
140#define BOOST_FLYWEIGHT_PERFECT_FWD_WITH_ARGS(name,body)
141#elif BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS==1
142#define BOOST_FLYWEIGHT_PERFECT_FWD_WITH_ARGS(name,body) \
143BOOST_FLYWEIGHT_PERFECT_FWD_1(name,body)
144#elif BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS==2
145#define BOOST_FLYWEIGHT_PERFECT_FWD_WITH_ARGS(name,body) \
146BOOST_FLYWEIGHT_PERFECT_FWD_1(name,body) \
147BOOST_FLYWEIGHT_PERFECT_FWD_2(name,body)
148#elif BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS==3
149#define BOOST_FLYWEIGHT_PERFECT_FWD_WITH_ARGS(name,body) \
150BOOST_FLYWEIGHT_PERFECT_FWD_1(name,body) \
151BOOST_FLYWEIGHT_PERFECT_FWD_2(name,body) \
152BOOST_FLYWEIGHT_PERFECT_FWD_3(name,body)
153#elif BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS==4
154#define BOOST_FLYWEIGHT_PERFECT_FWD_WITH_ARGS(name,body) \
155BOOST_FLYWEIGHT_PERFECT_FWD_1(name,body) \
156BOOST_FLYWEIGHT_PERFECT_FWD_2(name,body) \
157BOOST_FLYWEIGHT_PERFECT_FWD_3(name,body) \
158BOOST_FLYWEIGHT_PERFECT_FWD_4(name,body)
159#else /* BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS==5 */
160#define BOOST_FLYWEIGHT_PERFECT_FWD_WITH_ARGS(name,body) \
161BOOST_FLYWEIGHT_PERFECT_FWD_1(name,body) \
162BOOST_FLYWEIGHT_PERFECT_FWD_2(name,body) \
163BOOST_FLYWEIGHT_PERFECT_FWD_3(name,body) \
164BOOST_FLYWEIGHT_PERFECT_FWD_4(name,body) \
165BOOST_FLYWEIGHT_PERFECT_FWD_5(name,body)
166#endif
167
168#define BOOST_FLYWEIGHT_PERFECT_FWD(name,body) \
169BOOST_FLYWEIGHT_PERFECT_FWD_0(name,body) \
170BOOST_FLYWEIGHT_PERFECT_FWD_WITH_ARGS(name,body)
171
172#endif