]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | /*============================================================================= |
2 | Copyright (c) 2005-2012 Joel de Guzman | |
3 | Copyright (c) 2005-2006 Dan Marsden | |
4 | ||
5 | Distributed under the Boost Software License, Version 1.0. (See accompanying | |
6 | file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
7 | ==============================================================================*/ | |
8 | #if !defined(BOOST_PP_IS_ITERATING) | |
9 | #if !defined(BOOST_FUSION_SEQUENCE_DEQUE_DETAIL_DEQUE_FORWARD_CTOR_04122006_2212) | |
10 | #define BOOST_FUSION_SEQUENCE_DEQUE_DETAIL_DEQUE_FORWARD_CTOR_04122006_2212 | |
11 | ||
12 | #if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE) | |
13 | #error "C++03 only! This file should not have been included" | |
14 | #endif | |
15 | ||
16 | #define FUSION_DEQUE_FORWARD_CTOR_FORWARD(z, n, _) BOOST_FUSION_FWD_ELEM(T_##n, t##n) | |
17 | ||
18 | #include <boost/preprocessor/iterate.hpp> | |
19 | #include <boost/preprocessor/repetition/enum_shifted_params.hpp> | |
20 | #include <boost/preprocessor/repetition/enum_binary_params.hpp> | |
21 | ||
22 | #define BOOST_PP_FILENAME_1 \ | |
23 | <boost/fusion/container/deque/detail/cpp03/deque_forward_ctor.hpp> | |
24 | #define BOOST_PP_ITERATION_LIMITS (2, FUSION_MAX_DEQUE_SIZE) | |
25 | #include BOOST_PP_ITERATE() | |
26 | ||
27 | #undef FUSION_DEQUE_FORWARD_CTOR_FORWARD | |
28 | #endif | |
29 | #else | |
30 | ||
31 | #define N BOOST_PP_ITERATION() | |
32 | ||
33 | #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) | |
34 | FUSION_HASH if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) | |
35 | #endif | |
36 | #if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \ | |
37 | (defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)) | |
38 | BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED | |
39 | deque(BOOST_PP_ENUM_BINARY_PARAMS(N, typename detail::call_param<T, >::type t)) | |
40 | : base(detail::deque_keyed_values<BOOST_PP_ENUM_PARAMS(N, T)>::construct(BOOST_PP_ENUM_PARAMS(N, t))) | |
41 | {} | |
42 | #endif | |
43 | #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) | |
44 | FUSION_HASH endif | |
45 | #endif | |
46 | ||
47 | #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) | |
48 | FUSION_HASH if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) | |
49 | #endif | |
50 | #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \ | |
51 | (defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)) | |
52 | BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED | |
53 | deque(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& t)) | |
54 | : base(detail::deque_keyed_values<BOOST_PP_ENUM_PARAMS(N, T)>::construct(BOOST_PP_ENUM_PARAMS(N, t))) | |
55 | {} | |
56 | ||
57 | template <BOOST_PP_ENUM_PARAMS(N, typename T_)> | |
58 | BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED | |
59 | deque(BOOST_PP_ENUM_BINARY_PARAMS(N, T_, && t)) | |
60 | : base(detail::deque_keyed_values<BOOST_PP_ENUM_PARAMS(N, T)>:: | |
61 | forward_(BOOST_PP_ENUM(N, FUSION_DEQUE_FORWARD_CTOR_FORWARD, _))) | |
62 | {} | |
63 | #endif | |
64 | #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) | |
65 | FUSION_HASH endif | |
66 | #endif | |
67 | ||
68 | #undef N | |
69 | #endif |