]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/type_erasure/include/boost/type_erasure/detail/normalize_deduced.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / type_erasure / include / boost / type_erasure / detail / normalize_deduced.hpp
CommitLineData
7c673cae
FG
1// Boost.TypeErasure library
2//
3// Copyright 2011 Steven Watanabe
4//
5// Distributed under the Boost Software License Version 1.0. (See
6// accompanying file LICENSE_1_0.txt or copy at
7// http://www.boost.org/LICENSE_1_0.txt)
8//
9// $Id$
10
11#if !defined(BOOST_PP_IS_ITERATING)
12
13#ifndef BOOST_TYPE_ERASURE_DETAIL_NORMALIZE_DEDUCED_HPP_INCLUDED
14#define BOOST_TYPE_ERASURE_DETAIL_NORMALIZE_DEDUCED_HPP_INCLUDED
15
16#include <boost/preprocessor/iteration/iterate.hpp>
17#include <boost/preprocessor/repetition/enum.hpp>
18#include <boost/preprocessor/repetition/enum_params.hpp>
19
20namespace boost {
21namespace type_erasure {
22namespace detail {
23
24template<class M, class T>
25struct normalize_deduced;
26template<class M, class T>
27struct normalize_placeholder;
28
29#define BOOST_PP_FILENAME_1 <boost/type_erasure/detail/normalize_deduced.hpp>
30#define BOOST_PP_ITERATION_LIMITS (1, BOOST_TYPE_ERASURE_MAX_ARITY)
31#include BOOST_PP_ITERATE()
32
33}
34}
35}
36
37#endif
38
39#else
40
41#define N BOOST_PP_ITERATION()
42
43#define BOOST_TYPE_ERASURE_NORMALIZE_PLACEHOLDER(z, n, data) \
44 typename ::boost::type_erasure::detail::normalize_placeholder< \
45 M, \
46 BOOST_PP_CAT(U, n) \
47 >::type
48
49template<class M, template<BOOST_PP_ENUM_PARAMS(N, class T)> class T, BOOST_PP_ENUM_PARAMS(N, class U)>
50struct normalize_deduced<M, T<BOOST_PP_ENUM_PARAMS(N, U)> >
51{
52 typedef typename ::boost::type_erasure::deduced<
53 T<BOOST_PP_ENUM(N, BOOST_TYPE_ERASURE_NORMALIZE_PLACEHOLDER, ~)>
54 >::type type;
55};
56
57#undef BOOST_TYPE_ERASURE_NORMALIZE_PLACEHOLDER
58
59#undef N
60
61#endif