summaryrefslogtreecommitdiff
path: root/boost/fusion/container/list
diff options
context:
space:
mode:
Diffstat (limited to 'boost/fusion/container/list')
-rw-r--r--boost/fusion/container/list/cons.hpp4
-rw-r--r--boost/fusion/container/list/detail/cpp03/limits.hpp (renamed from boost/fusion/container/list/limits.hpp)0
-rw-r--r--boost/fusion/container/list/detail/cpp03/list.hpp102
-rw-r--r--boost/fusion/container/list/detail/cpp03/list_forward_ctor.hpp (renamed from boost/fusion/container/list/detail/list_forward_ctor.hpp)2
-rw-r--r--boost/fusion/container/list/detail/cpp03/list_fwd.hpp51
-rw-r--r--boost/fusion/container/list/detail/cpp03/list_to_cons.hpp76
-rw-r--r--boost/fusion/container/list/detail/cpp03/list_to_cons_call.hpp (renamed from boost/fusion/container/list/detail/list_to_cons_call.hpp)2
-rw-r--r--boost/fusion/container/list/detail/cpp03/preprocessed/list.hpp (renamed from boost/fusion/container/list/detail/preprocessed/list.hpp)10
-rw-r--r--boost/fusion/container/list/detail/cpp03/preprocessed/list10.hpp (renamed from boost/fusion/container/list/detail/preprocessed/list10.hpp)4
-rw-r--r--boost/fusion/container/list/detail/cpp03/preprocessed/list10_fwd.hpp (renamed from boost/fusion/container/list/detail/preprocessed/list10_fwd.hpp)0
-rw-r--r--boost/fusion/container/list/detail/cpp03/preprocessed/list20.hpp (renamed from boost/fusion/container/list/detail/preprocessed/list20.hpp)4
-rw-r--r--boost/fusion/container/list/detail/cpp03/preprocessed/list20_fwd.hpp (renamed from boost/fusion/container/list/detail/preprocessed/list20_fwd.hpp)0
-rw-r--r--boost/fusion/container/list/detail/cpp03/preprocessed/list30.hpp (renamed from boost/fusion/container/list/detail/preprocessed/list30.hpp)4
-rw-r--r--boost/fusion/container/list/detail/cpp03/preprocessed/list30_fwd.hpp (renamed from boost/fusion/container/list/detail/preprocessed/list30_fwd.hpp)0
-rw-r--r--boost/fusion/container/list/detail/cpp03/preprocessed/list40.hpp (renamed from boost/fusion/container/list/detail/preprocessed/list40.hpp)4
-rw-r--r--boost/fusion/container/list/detail/cpp03/preprocessed/list40_fwd.hpp (renamed from boost/fusion/container/list/detail/preprocessed/list40_fwd.hpp)0
-rw-r--r--boost/fusion/container/list/detail/cpp03/preprocessed/list50.hpp (renamed from boost/fusion/container/list/detail/preprocessed/list50.hpp)4
-rw-r--r--boost/fusion/container/list/detail/cpp03/preprocessed/list50_fwd.hpp (renamed from boost/fusion/container/list/detail/preprocessed/list50_fwd.hpp)0
-rw-r--r--boost/fusion/container/list/detail/cpp03/preprocessed/list_fwd.hpp (renamed from boost/fusion/container/list/detail/preprocessed/list_fwd.hpp)10
-rw-r--r--boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons.hpp (renamed from boost/fusion/container/list/detail/preprocessed/list_to_cons.hpp)10
-rw-r--r--boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons10.hpp (renamed from boost/fusion/container/list/detail/preprocessed/list_to_cons10.hpp)0
-rw-r--r--boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons20.hpp (renamed from boost/fusion/container/list/detail/preprocessed/list_to_cons20.hpp)0
-rw-r--r--boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons30.hpp (renamed from boost/fusion/container/list/detail/preprocessed/list_to_cons30.hpp)0
-rw-r--r--boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons40.hpp (renamed from boost/fusion/container/list/detail/preprocessed/list_to_cons40.hpp)0
-rw-r--r--boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons50.hpp (renamed from boost/fusion/container/list/detail/preprocessed/list_to_cons50.hpp)0
-rw-r--r--boost/fusion/container/list/detail/list_to_cons.hpp89
-rw-r--r--boost/fusion/container/list/list.hpp136
-rw-r--r--boost/fusion/container/list/list_fwd.hpp52
28 files changed, 398 insertions, 166 deletions
diff --git a/boost/fusion/container/list/cons.hpp b/boost/fusion/container/list/cons.hpp
index 61d8dbcfe1..e05b62eb48 100644
--- a/boost/fusion/container/list/cons.hpp
+++ b/boost/fusion/container/list/cons.hpp
@@ -23,6 +23,7 @@
#include <boost/fusion/container/list/detail/value_at_impl.hpp>
#include <boost/fusion/container/list/detail/empty_impl.hpp>
#include <boost/type_traits/is_convertible.hpp>
+#include <boost/type_traits/is_base_of.hpp>
#include <boost/utility/enable_if.hpp>
#include <boost/fusion/support/sequence_base.hpp>
#include <boost/fusion/support/is_sequence.hpp>
@@ -73,12 +74,13 @@ namespace boost { namespace fusion
: car(rhs.car), cdr(rhs.cdr) {}
template <typename Sequence>
- BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
+ BOOST_FUSION_GPU_ENABLED
cons(
Sequence const& seq
, typename boost::enable_if<
mpl::and_<
traits::is_sequence<Sequence>
+ , mpl::not_<is_base_of<cons, Sequence> >
, mpl::not_<is_convertible<Sequence, Car> > > // use copy to car instead
>::type* /*dummy*/ = 0
)
diff --git a/boost/fusion/container/list/limits.hpp b/boost/fusion/container/list/detail/cpp03/limits.hpp
index cc64ad7224..cc64ad7224 100644
--- a/boost/fusion/container/list/limits.hpp
+++ b/boost/fusion/container/list/detail/cpp03/limits.hpp
diff --git a/boost/fusion/container/list/detail/cpp03/list.hpp b/boost/fusion/container/list/detail/cpp03/list.hpp
new file mode 100644
index 0000000000..b39489b0b7
--- /dev/null
+++ b/boost/fusion/container/list/detail/cpp03/list.hpp
@@ -0,0 +1,102 @@
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_LIST_07172005_1153)
+#define FUSION_LIST_07172005_1153
+
+#include <boost/fusion/support/config.hpp>
+#include <boost/fusion/container/list/detail/cpp03/list_fwd.hpp>
+#include <boost/fusion/container/list/detail/cpp03/list_to_cons.hpp>
+#include <boost/fusion/support/is_sequence.hpp>
+#include <boost/core/enable_if.hpp>
+
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/container/list/detail/cpp03/preprocessed/list.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/list" FUSION_MAX_LIST_SIZE_STR ".hpp")
+#endif
+
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 1)
+#endif
+
+namespace boost { namespace fusion
+{
+ struct nil_;
+ struct void_;
+
+ template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, typename T)>
+ struct list
+ : detail::list_to_cons<BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, T)>::type
+ {
+ private:
+ typedef
+ detail::list_to_cons<BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, T)>
+ list_to_cons;
+ typedef typename list_to_cons::type inherited_type;
+
+ public:
+ BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
+ list()
+ : inherited_type() {}
+
+ template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, typename U)>
+ BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
+ list(list<BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, U)> const& rhs)
+ : inherited_type(rhs) {}
+
+ template <typename Sequence>
+ BOOST_FUSION_GPU_ENABLED
+ list(Sequence const& rhs
+ , typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0)
+ : inherited_type(rhs) {}
+
+ // Expand a couple of forwarding constructors for arguments
+ // of type (T0), (T0, T1), (T0, T1, T2) etc. Exanple:
+ //
+ // list(
+ // typename detail::call_param<T0>::type arg0
+ // , typename detail::call_param<T1>::type arg1)
+ // : inherited_type(list_to_cons::call(arg0, arg1)) {}
+ #include <boost/fusion/container/list/detail/cpp03/list_forward_ctor.hpp>
+
+ template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, typename U)>
+ BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
+ list&
+ operator=(list<BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, U)> const& rhs)
+ {
+ inherited_type::operator=(rhs);
+ return *this;
+ }
+
+ template <typename Sequence>
+ BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
+ typename boost::enable_if<traits::is_sequence<Sequence>, list&>::type
+ operator=(Sequence const& rhs)
+ {
+ inherited_type::operator=(rhs);
+ return *this;
+ }
+ };
+}}
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(output: null)
+#endif
+
+#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
+
+#endif
diff --git a/boost/fusion/container/list/detail/list_forward_ctor.hpp b/boost/fusion/container/list/detail/cpp03/list_forward_ctor.hpp
index a5c8aa66c9..f9a706786b 100644
--- a/boost/fusion/container/list/detail/list_forward_ctor.hpp
+++ b/boost/fusion/container/list/detail/cpp03/list_forward_ctor.hpp
@@ -18,7 +18,7 @@
#define FUSION_LIST_CL_PAREN(z, n, type) )
#define BOOST_PP_FILENAME_1 \
- <boost/fusion/container/list/detail/list_forward_ctor.hpp>
+ <boost/fusion/container/list/detail/cpp03/list_forward_ctor.hpp>
#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE)
#include BOOST_PP_ITERATE()
diff --git a/boost/fusion/container/list/detail/cpp03/list_fwd.hpp b/boost/fusion/container/list/detail/cpp03/list_fwd.hpp
new file mode 100644
index 0000000000..cedc700343
--- /dev/null
+++ b/boost/fusion/container/list/detail/cpp03/list_fwd.hpp
@@ -0,0 +1,51 @@
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_LIST_FORWARD_07172005_0224)
+#define FUSION_LIST_FORWARD_07172005_0224
+
+#include <boost/fusion/support/config.hpp>
+#include <boost/fusion/container/list/detail/cpp03/limits.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/container/list/detail/cpp03/preprocessed/list_fwd.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/list" FUSION_MAX_LIST_SIZE_STR "_fwd.hpp")
+#endif
+
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 1)
+#endif
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_LIST_SIZE, typename T, void_)
+ >
+ struct list;
+}}
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(output: null)
+#endif
+
+#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
+
+#endif
diff --git a/boost/fusion/container/list/detail/cpp03/list_to_cons.hpp b/boost/fusion/container/list/detail/cpp03/list_to_cons.hpp
new file mode 100644
index 0000000000..989e91abe3
--- /dev/null
+++ b/boost/fusion/container/list/detail/cpp03/list_to_cons.hpp
@@ -0,0 +1,76 @@
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_LIST_TO_CONS_07172005_1041)
+#define FUSION_LIST_TO_CONS_07172005_1041
+
+#include <boost/fusion/support/config.hpp>
+#include <boost/fusion/container/list/cons.hpp>
+#include <boost/fusion/container/list/detail/cpp03/limits.hpp>
+#include <boost/preprocessor/repetition/enum.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_shifted_params.hpp>
+#include <boost/preprocessor/arithmetic/dec.hpp>
+
+#define FUSION_VOID(z, n, _) void_
+
+namespace boost { namespace fusion
+{
+ struct nil_;
+ struct void_;
+}}
+
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/list_to_cons" FUSION_MAX_LIST_SIZE_STR ".hpp")
+#endif
+
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 1)
+#endif
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, typename T)>
+ struct list_to_cons
+ {
+ typedef T0 head_type;
+ typedef list_to_cons<
+ BOOST_PP_ENUM_SHIFTED_PARAMS(FUSION_MAX_LIST_SIZE, T), void_>
+ tail_list_to_cons;
+ typedef typename tail_list_to_cons::type tail_type;
+
+ typedef cons<head_type, tail_type> type;
+
+ #include <boost/fusion/container/list/detail/cpp03/list_to_cons_call.hpp>
+ };
+
+ template <>
+ struct list_to_cons<BOOST_PP_ENUM(FUSION_MAX_LIST_SIZE, FUSION_VOID, _)>
+ {
+ typedef nil_ type;
+ };
+}}}
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(output: null)
+#endif
+
+#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
+
+#undef FUSION_VOID
+#endif
diff --git a/boost/fusion/container/list/detail/list_to_cons_call.hpp b/boost/fusion/container/list/detail/cpp03/list_to_cons_call.hpp
index fbae58009e..e49db4a840 100644
--- a/boost/fusion/container/list/detail/list_to_cons_call.hpp
+++ b/boost/fusion/container/list/detail/cpp03/list_to_cons_call.hpp
@@ -13,7 +13,7 @@
#include <boost/preprocessor/repetition/enum_binary_params.hpp>
#define BOOST_PP_FILENAME_1 \
- <boost/fusion/container/list/detail/list_to_cons_call.hpp>
+ <boost/fusion/container/list/detail/cpp03/list_to_cons_call.hpp>
#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE)
#include BOOST_PP_ITERATE()
diff --git a/boost/fusion/container/list/detail/preprocessed/list.hpp b/boost/fusion/container/list/detail/cpp03/preprocessed/list.hpp
index 315ffcf7ee..7af66f4964 100644
--- a/boost/fusion/container/list/detail/preprocessed/list.hpp
+++ b/boost/fusion/container/list/detail/cpp03/preprocessed/list.hpp
@@ -8,15 +8,15 @@
==============================================================================*/
#if FUSION_MAX_LIST_SIZE <= 10
-#include <boost/fusion/container/list/detail/preprocessed/list10.hpp>
+#include <boost/fusion/container/list/detail/cpp03/preprocessed/list10.hpp>
#elif FUSION_MAX_LIST_SIZE <= 20
-#include <boost/fusion/container/list/detail/preprocessed/list20.hpp>
+#include <boost/fusion/container/list/detail/cpp03/preprocessed/list20.hpp>
#elif FUSION_MAX_LIST_SIZE <= 30
-#include <boost/fusion/container/list/detail/preprocessed/list30.hpp>
+#include <boost/fusion/container/list/detail/cpp03/preprocessed/list30.hpp>
#elif FUSION_MAX_LIST_SIZE <= 40
-#include <boost/fusion/container/list/detail/preprocessed/list40.hpp>
+#include <boost/fusion/container/list/detail/cpp03/preprocessed/list40.hpp>
#elif FUSION_MAX_LIST_SIZE <= 50
-#include <boost/fusion/container/list/detail/preprocessed/list50.hpp>
+#include <boost/fusion/container/list/detail/cpp03/preprocessed/list50.hpp>
#else
#error "FUSION_MAX_LIST_SIZE out of bounds for preprocessed headers"
#endif
diff --git a/boost/fusion/container/list/detail/preprocessed/list10.hpp b/boost/fusion/container/list/detail/cpp03/preprocessed/list10.hpp
index 9a289365cd..47db8f588c 100644
--- a/boost/fusion/container/list/detail/preprocessed/list10.hpp
+++ b/boost/fusion/container/list/detail/cpp03/preprocessed/list10.hpp
@@ -18,8 +18,8 @@ namespace boost { namespace fusion
typedef
detail::list_to_cons<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9>
list_to_cons;
- public:
typedef typename list_to_cons::type inherited_type;
+ public:
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
list()
: inherited_type() {}
@@ -28,7 +28,7 @@ namespace boost { namespace fusion
list(list<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9> const& rhs)
: inherited_type(rhs) {}
template <typename Sequence>
- BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
+ BOOST_FUSION_GPU_ENABLED
list(Sequence const& rhs
, typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0)
: inherited_type(rhs) {}
diff --git a/boost/fusion/container/list/detail/preprocessed/list10_fwd.hpp b/boost/fusion/container/list/detail/cpp03/preprocessed/list10_fwd.hpp
index f513a99194..f513a99194 100644
--- a/boost/fusion/container/list/detail/preprocessed/list10_fwd.hpp
+++ b/boost/fusion/container/list/detail/cpp03/preprocessed/list10_fwd.hpp
diff --git a/boost/fusion/container/list/detail/preprocessed/list20.hpp b/boost/fusion/container/list/detail/cpp03/preprocessed/list20.hpp
index a201cb44de..8eb7d2d2df 100644
--- a/boost/fusion/container/list/detail/preprocessed/list20.hpp
+++ b/boost/fusion/container/list/detail/cpp03/preprocessed/list20.hpp
@@ -18,8 +18,8 @@ namespace boost { namespace fusion
typedef
detail::list_to_cons<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19>
list_to_cons;
- public:
typedef typename list_to_cons::type inherited_type;
+ public:
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
list()
: inherited_type() {}
@@ -28,7 +28,7 @@ namespace boost { namespace fusion
list(list<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19> const& rhs)
: inherited_type(rhs) {}
template <typename Sequence>
- BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
+ BOOST_FUSION_GPU_ENABLED
list(Sequence const& rhs
, typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0)
: inherited_type(rhs) {}
diff --git a/boost/fusion/container/list/detail/preprocessed/list20_fwd.hpp b/boost/fusion/container/list/detail/cpp03/preprocessed/list20_fwd.hpp
index 2eedc8b293..2eedc8b293 100644
--- a/boost/fusion/container/list/detail/preprocessed/list20_fwd.hpp
+++ b/boost/fusion/container/list/detail/cpp03/preprocessed/list20_fwd.hpp
diff --git a/boost/fusion/container/list/detail/preprocessed/list30.hpp b/boost/fusion/container/list/detail/cpp03/preprocessed/list30.hpp
index ef9e65fc6a..fb24e8d47b 100644
--- a/boost/fusion/container/list/detail/preprocessed/list30.hpp
+++ b/boost/fusion/container/list/detail/cpp03/preprocessed/list30.hpp
@@ -18,8 +18,8 @@ namespace boost { namespace fusion
typedef
detail::list_to_cons<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29>
list_to_cons;
- public:
typedef typename list_to_cons::type inherited_type;
+ public:
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
list()
: inherited_type() {}
@@ -28,7 +28,7 @@ namespace boost { namespace fusion
list(list<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29> const& rhs)
: inherited_type(rhs) {}
template <typename Sequence>
- BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
+ BOOST_FUSION_GPU_ENABLED
list(Sequence const& rhs
, typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0)
: inherited_type(rhs) {}
diff --git a/boost/fusion/container/list/detail/preprocessed/list30_fwd.hpp b/boost/fusion/container/list/detail/cpp03/preprocessed/list30_fwd.hpp
index 32bfc606f7..32bfc606f7 100644
--- a/boost/fusion/container/list/detail/preprocessed/list30_fwd.hpp
+++ b/boost/fusion/container/list/detail/cpp03/preprocessed/list30_fwd.hpp
diff --git a/boost/fusion/container/list/detail/preprocessed/list40.hpp b/boost/fusion/container/list/detail/cpp03/preprocessed/list40.hpp
index 570b2ccdda..49437dee5e 100644
--- a/boost/fusion/container/list/detail/preprocessed/list40.hpp
+++ b/boost/fusion/container/list/detail/cpp03/preprocessed/list40.hpp
@@ -18,8 +18,8 @@ namespace boost { namespace fusion
typedef
detail::list_to_cons<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39>
list_to_cons;
- public:
typedef typename list_to_cons::type inherited_type;
+ public:
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
list()
: inherited_type() {}
@@ -28,7 +28,7 @@ namespace boost { namespace fusion
list(list<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39> const& rhs)
: inherited_type(rhs) {}
template <typename Sequence>
- BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
+ BOOST_FUSION_GPU_ENABLED
list(Sequence const& rhs
, typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0)
: inherited_type(rhs) {}
diff --git a/boost/fusion/container/list/detail/preprocessed/list40_fwd.hpp b/boost/fusion/container/list/detail/cpp03/preprocessed/list40_fwd.hpp
index 5d0da6df4b..5d0da6df4b 100644
--- a/boost/fusion/container/list/detail/preprocessed/list40_fwd.hpp
+++ b/boost/fusion/container/list/detail/cpp03/preprocessed/list40_fwd.hpp
diff --git a/boost/fusion/container/list/detail/preprocessed/list50.hpp b/boost/fusion/container/list/detail/cpp03/preprocessed/list50.hpp
index d237cdf998..3ebbf19586 100644
--- a/boost/fusion/container/list/detail/preprocessed/list50.hpp
+++ b/boost/fusion/container/list/detail/cpp03/preprocessed/list50.hpp
@@ -18,8 +18,8 @@ namespace boost { namespace fusion
typedef
detail::list_to_cons<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49>
list_to_cons;
- public:
typedef typename list_to_cons::type inherited_type;
+ public:
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
list()
: inherited_type() {}
@@ -28,7 +28,7 @@ namespace boost { namespace fusion
list(list<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43 , U44 , U45 , U46 , U47 , U48 , U49> const& rhs)
: inherited_type(rhs) {}
template <typename Sequence>
- BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
+ BOOST_FUSION_GPU_ENABLED
list(Sequence const& rhs
, typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0)
: inherited_type(rhs) {}
diff --git a/boost/fusion/container/list/detail/preprocessed/list50_fwd.hpp b/boost/fusion/container/list/detail/cpp03/preprocessed/list50_fwd.hpp
index 2b3ae66cb6..2b3ae66cb6 100644
--- a/boost/fusion/container/list/detail/preprocessed/list50_fwd.hpp
+++ b/boost/fusion/container/list/detail/cpp03/preprocessed/list50_fwd.hpp
diff --git a/boost/fusion/container/list/detail/preprocessed/list_fwd.hpp b/boost/fusion/container/list/detail/cpp03/preprocessed/list_fwd.hpp
index b9be34752f..8a4037da48 100644
--- a/boost/fusion/container/list/detail/preprocessed/list_fwd.hpp
+++ b/boost/fusion/container/list/detail/cpp03/preprocessed/list_fwd.hpp
@@ -8,15 +8,15 @@
==============================================================================*/
#if FUSION_MAX_LIST_SIZE <= 10
-#include <boost/fusion/container/list/detail/preprocessed/list10_fwd.hpp>
+#include <boost/fusion/container/list/detail/cpp03/preprocessed/list10_fwd.hpp>
#elif FUSION_MAX_LIST_SIZE <= 20
-#include <boost/fusion/container/list/detail/preprocessed/list20_fwd.hpp>
+#include <boost/fusion/container/list/detail/cpp03/preprocessed/list20_fwd.hpp>
#elif FUSION_MAX_LIST_SIZE <= 30
-#include <boost/fusion/container/list/detail/preprocessed/list30_fwd.hpp>
+#include <boost/fusion/container/list/detail/cpp03/preprocessed/list30_fwd.hpp>
#elif FUSION_MAX_LIST_SIZE <= 40
-#include <boost/fusion/container/list/detail/preprocessed/list40_fwd.hpp>
+#include <boost/fusion/container/list/detail/cpp03/preprocessed/list40_fwd.hpp>
#elif FUSION_MAX_LIST_SIZE <= 50
-#include <boost/fusion/container/list/detail/preprocessed/list50_fwd.hpp>
+#include <boost/fusion/container/list/detail/cpp03/preprocessed/list50_fwd.hpp>
#else
#error "FUSION_MAX_LIST_SIZE out of bounds for preprocessed headers"
#endif
diff --git a/boost/fusion/container/list/detail/preprocessed/list_to_cons.hpp b/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons.hpp
index 0326bef1e5..d9ee9bb245 100644
--- a/boost/fusion/container/list/detail/preprocessed/list_to_cons.hpp
+++ b/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons.hpp
@@ -8,15 +8,15 @@
==============================================================================*/
#if FUSION_MAX_LIST_SIZE <= 10
-#include <boost/fusion/container/list/detail/preprocessed/list_to_cons10.hpp>
+#include <boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons10.hpp>
#elif FUSION_MAX_LIST_SIZE <= 20
-#include <boost/fusion/container/list/detail/preprocessed/list_to_cons20.hpp>
+#include <boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons20.hpp>
#elif FUSION_MAX_LIST_SIZE <= 30
-#include <boost/fusion/container/list/detail/preprocessed/list_to_cons30.hpp>
+#include <boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons30.hpp>
#elif FUSION_MAX_LIST_SIZE <= 40
-#include <boost/fusion/container/list/detail/preprocessed/list_to_cons40.hpp>
+#include <boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons40.hpp>
#elif FUSION_MAX_LIST_SIZE <= 50
-#include <boost/fusion/container/list/detail/preprocessed/list_to_cons50.hpp>
+#include <boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons50.hpp>
#else
#error "FUSION_MAX_LIST_SIZE out of bounds for preprocessed headers"
#endif
diff --git a/boost/fusion/container/list/detail/preprocessed/list_to_cons10.hpp b/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons10.hpp
index a98a8cc55f..a98a8cc55f 100644
--- a/boost/fusion/container/list/detail/preprocessed/list_to_cons10.hpp
+++ b/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons10.hpp
diff --git a/boost/fusion/container/list/detail/preprocessed/list_to_cons20.hpp b/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons20.hpp
index 3adce01d8d..3adce01d8d 100644
--- a/boost/fusion/container/list/detail/preprocessed/list_to_cons20.hpp
+++ b/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons20.hpp
diff --git a/boost/fusion/container/list/detail/preprocessed/list_to_cons30.hpp b/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons30.hpp
index 7a834a7064..7a834a7064 100644
--- a/boost/fusion/container/list/detail/preprocessed/list_to_cons30.hpp
+++ b/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons30.hpp
diff --git a/boost/fusion/container/list/detail/preprocessed/list_to_cons40.hpp b/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons40.hpp
index 731782dbfa..731782dbfa 100644
--- a/boost/fusion/container/list/detail/preprocessed/list_to_cons40.hpp
+++ b/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons40.hpp
diff --git a/boost/fusion/container/list/detail/preprocessed/list_to_cons50.hpp b/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons50.hpp
index e25371b5ae..e25371b5ae 100644
--- a/boost/fusion/container/list/detail/preprocessed/list_to_cons50.hpp
+++ b/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons50.hpp
diff --git a/boost/fusion/container/list/detail/list_to_cons.hpp b/boost/fusion/container/list/detail/list_to_cons.hpp
index bc8718631c..1ce1cfbafb 100644
--- a/boost/fusion/container/list/detail/list_to_cons.hpp
+++ b/boost/fusion/container/list/detail/list_to_cons.hpp
@@ -1,76 +1,61 @@
/*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2014-2015 Kohei Takahashi
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
-#if !defined(FUSION_LIST_TO_CONS_07172005_1041)
-#define FUSION_LIST_TO_CONS_07172005_1041
+#ifndef FUSION_LIST_MAIN_10262014_0447
+#define FUSION_LIST_MAIN_10262014_0447
+#include <boost/config.hpp>
#include <boost/fusion/support/config.hpp>
-#include <boost/fusion/container/list/cons.hpp>
-#include <boost/fusion/container/list/limits.hpp>
-#include <boost/preprocessor/repetition/enum.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_shifted_params.hpp>
-#include <boost/preprocessor/arithmetic/dec.hpp>
-
-#define FUSION_VOID(z, n, _) void_
-
-namespace boost { namespace fusion
-{
- struct nil_;
- struct void_;
-}}
+#include <boost/fusion/container/list/list_fwd.hpp>
-#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
-#include <boost/fusion/container/list/detail/preprocessed/list_to_cons.hpp>
+///////////////////////////////////////////////////////////////////////////////
+// Without variadics, we will use the PP version
+///////////////////////////////////////////////////////////////////////////////
+#if !defined(BOOST_FUSION_HAS_VARIADIC_LIST)
+# include <boost/fusion/container/list/detail/cpp03/list_to_cons.hpp>
#else
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/list_to_cons" FUSION_MAX_LIST_SIZE_STR ".hpp")
-#endif
-/*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
+///////////////////////////////////////////////////////////////////////////////
+// C++11 interface
+///////////////////////////////////////////////////////////////////////////////
+#include <boost/fusion/container/list/cons.hpp>
+#include <boost/fusion/support/detail/access.hpp>
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+namespace boost { namespace fusion { namespace detail
+{
+ template <typename ...T>
+ struct list_to_cons;
- This is an auto-generated file. Do not edit!
-==============================================================================*/
+ template <>
+ struct list_to_cons<>
+ {
+ typedef nil_ type;
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 1)
-#endif
+ BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
+ static type call() { return type(); }
+ };
-namespace boost { namespace fusion { namespace detail
-{
- template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, typename T)>
- struct list_to_cons
+ template <typename Head, typename ...Tail>
+ struct list_to_cons<Head, Tail...>
{
- typedef T0 head_type;
- typedef list_to_cons<
- BOOST_PP_ENUM_SHIFTED_PARAMS(FUSION_MAX_LIST_SIZE, T), void_>
- tail_list_to_cons;
+ typedef Head head_type;
+ typedef list_to_cons<Tail...> tail_list_to_cons;
typedef typename tail_list_to_cons::type tail_type;
typedef cons<head_type, tail_type> type;
- #include <boost/fusion/container/list/detail/list_to_cons_call.hpp>
- };
-
- template <>
- struct list_to_cons<BOOST_PP_ENUM(FUSION_MAX_LIST_SIZE, FUSION_VOID, _)>
- {
- typedef nil_ type;
+ BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
+ static type
+ call(typename detail::call_param<Head>::type _h,
+ typename detail::call_param<Tail>::type ..._t)
+ {
+ return type(_h, tail_list_to_cons::call(_t...));
+ }
};
}}}
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(output: null)
#endif
-
-#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
-
-#undef FUSION_VOID
#endif
diff --git a/boost/fusion/container/list/list.hpp b/boost/fusion/container/list/list.hpp
index 5b584131cc..865a6d7def 100644
--- a/boost/fusion/container/list/list.hpp
+++ b/boost/fusion/container/list/list.hpp
@@ -1,103 +1,127 @@
/*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2014-2015 Kohei Takahashi
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
-#if !defined(FUSION_LIST_07172005_1153)
-#define FUSION_LIST_07172005_1153
+#ifndef FUSION_LIST_10262014_0537
+#define FUSION_LIST_10262014_0537
#include <boost/fusion/support/config.hpp>
#include <boost/fusion/container/list/list_fwd.hpp>
-#include <boost/fusion/container/list/detail/list_to_cons.hpp>
-#include <boost/fusion/support/is_sequence.hpp>
-#include <boost/core/enable_if.hpp>
-#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
-#include <boost/fusion/container/list/detail/preprocessed/list.hpp>
+///////////////////////////////////////////////////////////////////////////////
+// Without variadics, we will use the PP version
+///////////////////////////////////////////////////////////////////////////////
+#if !defined(BOOST_FUSION_HAS_VARIADIC_LIST)
+# include <boost/fusion/container/list/detail/cpp03/list.hpp>
#else
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/list" FUSION_MAX_LIST_SIZE_STR ".hpp")
-#endif
-
-/*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
- This is an auto-generated file. Do not edit!
-==============================================================================*/
-
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 1)
-#endif
+///////////////////////////////////////////////////////////////////////////////
+// C++11 interface
+///////////////////////////////////////////////////////////////////////////////
+#include <utility>
+#include <boost/fusion/container/list/detail/list_to_cons.hpp>
namespace boost { namespace fusion
{
struct nil_;
- struct void_;
- template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, typename T)>
- struct list
- : detail::list_to_cons<BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, T)>::type
+ template <>
+ struct list<>
+ : detail::list_to_cons<>::type
{
private:
- typedef
- detail::list_to_cons<BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, T)>
- list_to_cons;
+ typedef detail::list_to_cons<> list_to_cons;
+ typedef list_to_cons::type inherited_type;
public:
- typedef typename list_to_cons::type inherited_type;
-
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
list()
: inherited_type() {}
- template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, typename U)>
- BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
- list(list<BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, U)> const& rhs)
+#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+ template <typename Sequence>
+ BOOST_FUSION_GPU_ENABLED
+ list(Sequence const& rhs)
: inherited_type(rhs) {}
template <typename Sequence>
+ BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
+ list&
+ operator=(Sequence const& rhs)
+ {
+ inherited_type::operator=(rhs);
+ return *this;
+ }
+#else
+ template <typename Sequence>
+ BOOST_FUSION_GPU_ENABLED
+ list(Sequence&& rhs)
+ : inherited_type(std::forward<Sequence>(rhs)) {}
+
+ template <typename Sequence>
+ BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
+ list&
+ operator=(Sequence&& rhs)
+ {
+ inherited_type::operator=(std::forward<Sequence>(rhs));
+ return *this;
+ }
+#endif
+ };
+
+ template <typename ...T>
+ struct list
+ : detail::list_to_cons<T...>::type
+ {
+ private:
+ typedef detail::list_to_cons<T...> list_to_cons;
+ typedef typename list_to_cons::type inherited_type;
+
+ public:
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
- list(Sequence const& rhs
- , typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0)
+ list()
+ : inherited_type() {}
+
+#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+ template <typename Sequence>
+ BOOST_FUSION_GPU_ENABLED
+ list(Sequence const& rhs)
: inherited_type(rhs) {}
+#else
+ template <typename Sequence>
+ BOOST_FUSION_GPU_ENABLED
+ list(Sequence&& rhs)
+ : inherited_type(std::forward<Sequence>(rhs)) {}
+#endif
- // Expand a couple of forwarding constructors for arguments
- // of type (T0), (T0, T1), (T0, T1, T2) etc. Exanple:
- //
- // list(
- // typename detail::call_param<T0>::type arg0
- // , typename detail::call_param<T1>::type arg1)
- // : inherited_type(list_to_cons::call(arg0, arg1)) {}
- #include <boost/fusion/container/list/detail/list_forward_ctor.hpp>
+ BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
+ explicit
+ list(typename detail::call_param<T>::type ...args)
+ : inherited_type(list_to_cons::call(args...)) {}
- template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, typename U)>
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+ template <typename Sequence>
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
list&
- operator=(list<BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, U)> const& rhs)
+ operator=(Sequence const& rhs)
{
inherited_type::operator=(rhs);
return *this;
}
-
+#else
template <typename Sequence>
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
- typename boost::enable_if<traits::is_sequence<Sequence>, list&>::type
- operator=(Sequence const& rhs)
+ list&
+ operator=(Sequence&& rhs)
{
- inherited_type::operator=(rhs);
+ inherited_type::operator=(std::forward<Sequence>(rhs));
return *this;
}
+#endif
};
}}
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(output: null)
#endif
-
-#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
-
#endif
diff --git a/boost/fusion/container/list/list_fwd.hpp b/boost/fusion/container/list/list_fwd.hpp
index d827d283e8..c5f2619267 100644
--- a/boost/fusion/container/list/list_fwd.hpp
+++ b/boost/fusion/container/list/list_fwd.hpp
@@ -1,51 +1,43 @@
/*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2014 Kohei Takahashi
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
-#if !defined(FUSION_LIST_FORWARD_07172005_0224)
-#define FUSION_LIST_FORWARD_07172005_0224
+#ifndef FUSION_LIST_FORWARD_10262014_0528
+#define FUSION_LIST_FORWARD_10262014_0528
#include <boost/fusion/support/config.hpp>
-#include <boost/fusion/container/list/limits.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/config.hpp>
-#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
-#include <boost/fusion/container/list/detail/preprocessed/list_fwd.hpp>
+#if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) \
+ || (defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES))
+# if defined(BOOST_FUSION_HAS_VARIADIC_LIST)
+# undef BOOST_FUSION_HAS_VARIADIC_LIST
+# endif
#else
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/list" FUSION_MAX_LIST_SIZE_STR "_fwd.hpp")
+# if !defined(BOOST_FUSION_HAS_VARIADIC_LIST)
+# define BOOST_FUSION_HAS_VARIADIC_LIST
+# endif
#endif
-/*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
- This is an auto-generated file. Do not edit!
-==============================================================================*/
-
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 1)
-#endif
+///////////////////////////////////////////////////////////////////////////////
+// With no variadics, we will use the C++03 version
+///////////////////////////////////////////////////////////////////////////////
+#if !defined(BOOST_FUSION_HAS_VARIADIC_LIST)
+# include <boost/fusion/container/list/detail/cpp03/list_fwd.hpp>
+#else
+///////////////////////////////////////////////////////////////////////////////
+// C++11 interface
+///////////////////////////////////////////////////////////////////////////////
namespace boost { namespace fusion
{
struct void_;
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_LIST_SIZE, typename T, void_)
- >
+ template <typename ...T>
struct list;
}}
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(output: null)
#endif
-
-#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
-
#endif