summaryrefslogtreecommitdiff
path: root/boost/fusion/container/set/detail
diff options
context:
space:
mode:
Diffstat (limited to 'boost/fusion/container/set/detail')
-rw-r--r--boost/fusion/container/set/detail/as_set.hpp136
-rw-r--r--boost/fusion/container/set/detail/cpp03/as_set.hpp139
-rw-r--r--boost/fusion/container/set/detail/cpp03/limits.hpp28
-rw-r--r--boost/fusion/container/set/detail/cpp03/preprocessed/as_set.hpp (renamed from boost/fusion/container/set/detail/preprocessed/as_set.hpp)10
-rw-r--r--boost/fusion/container/set/detail/cpp03/preprocessed/as_set10.hpp (renamed from boost/fusion/container/set/detail/preprocessed/as_set10.hpp)0
-rw-r--r--boost/fusion/container/set/detail/cpp03/preprocessed/as_set20.hpp (renamed from boost/fusion/container/set/detail/preprocessed/as_set20.hpp)0
-rw-r--r--boost/fusion/container/set/detail/cpp03/preprocessed/as_set30.hpp (renamed from boost/fusion/container/set/detail/preprocessed/as_set30.hpp)0
-rw-r--r--boost/fusion/container/set/detail/cpp03/preprocessed/as_set40.hpp (renamed from boost/fusion/container/set/detail/preprocessed/as_set40.hpp)0
-rw-r--r--boost/fusion/container/set/detail/cpp03/preprocessed/as_set50.hpp (renamed from boost/fusion/container/set/detail/preprocessed/as_set50.hpp)0
-rw-r--r--boost/fusion/container/set/detail/cpp03/preprocessed/set.hpp (renamed from boost/fusion/container/set/detail/preprocessed/set.hpp)10
-rw-r--r--boost/fusion/container/set/detail/cpp03/preprocessed/set10.hpp (renamed from boost/fusion/container/set/detail/preprocessed/set10.hpp)0
-rw-r--r--boost/fusion/container/set/detail/cpp03/preprocessed/set10_fwd.hpp (renamed from boost/fusion/container/set/detail/preprocessed/set10_fwd.hpp)0
-rw-r--r--boost/fusion/container/set/detail/cpp03/preprocessed/set20.hpp (renamed from boost/fusion/container/set/detail/preprocessed/set20.hpp)0
-rw-r--r--boost/fusion/container/set/detail/cpp03/preprocessed/set20_fwd.hpp (renamed from boost/fusion/container/set/detail/preprocessed/set20_fwd.hpp)0
-rw-r--r--boost/fusion/container/set/detail/cpp03/preprocessed/set30.hpp (renamed from boost/fusion/container/set/detail/preprocessed/set30.hpp)0
-rw-r--r--boost/fusion/container/set/detail/cpp03/preprocessed/set30_fwd.hpp (renamed from boost/fusion/container/set/detail/preprocessed/set30_fwd.hpp)0
-rw-r--r--boost/fusion/container/set/detail/cpp03/preprocessed/set40.hpp (renamed from boost/fusion/container/set/detail/preprocessed/set40.hpp)0
-rw-r--r--boost/fusion/container/set/detail/cpp03/preprocessed/set40_fwd.hpp (renamed from boost/fusion/container/set/detail/preprocessed/set40_fwd.hpp)0
-rw-r--r--boost/fusion/container/set/detail/cpp03/preprocessed/set50.hpp (renamed from boost/fusion/container/set/detail/preprocessed/set50.hpp)0
-rw-r--r--boost/fusion/container/set/detail/cpp03/preprocessed/set50_fwd.hpp (renamed from boost/fusion/container/set/detail/preprocessed/set50_fwd.hpp)0
-rw-r--r--boost/fusion/container/set/detail/cpp03/preprocessed/set_fwd.hpp (renamed from boost/fusion/container/set/detail/preprocessed/set_fwd.hpp)10
-rw-r--r--boost/fusion/container/set/detail/cpp03/set.hpp106
-rw-r--r--boost/fusion/container/set/detail/cpp03/set_forward_ctor.hpp (renamed from boost/fusion/container/set/detail/set_forward_ctor.hpp)2
-rw-r--r--boost/fusion/container/set/detail/cpp03/set_fwd.hpp53
24 files changed, 350 insertions, 144 deletions
diff --git a/boost/fusion/container/set/detail/as_set.hpp b/boost/fusion/container/set/detail/as_set.hpp
index a41498a333..1eb0d3fe12 100644
--- a/boost/fusion/container/set/detail/as_set.hpp
+++ b/boost/fusion/container/set/detail/as_set.hpp
@@ -1,139 +1,19 @@
/*=============================================================================
- 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)
==============================================================================*/
-#ifndef BOOST_PP_IS_ITERATING
-#if !defined(FUSION_AS_SET_0932005_1341)
-#define FUSION_AS_SET_0932005_1341
+#ifndef FUSION_AS_SET_11062014_2121
+#define FUSION_AS_SET_11062014_2121
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/repeat.hpp>
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/inc.hpp>
-#include <boost/preprocessor/dec.hpp>
-#include <boost/fusion/container/set/set.hpp>
-#include <boost/fusion/iterator/value_of.hpp>
-#include <boost/fusion/iterator/deref.hpp>
-#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/support/config.hpp>
+#include <boost/fusion/container/set/set_fwd.hpp>
-namespace boost { namespace fusion { namespace detail
-{
-BOOST_FUSION_BARRIER_BEGIN
-
- template <int size>
- struct as_set;
-
- template <>
- struct as_set<0>
- {
- template <typename Iterator>
- struct apply
- {
- typedef set<> type;
- };
-
- template <typename Iterator>
- BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
- static typename apply<Iterator>::type
- call(Iterator)
- {
- return set<>();
- }
- };
-
-BOOST_FUSION_BARRIER_END
-}}}
-
-#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
-#include <boost/fusion/container/set/detail/preprocessed/as_set.hpp>
-#else
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/as_set" FUSION_MAX_SET_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
-{
-BOOST_FUSION_BARRIER_BEGIN
-
-#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \
- typedef typename fusion::result_of::next<BOOST_PP_CAT(I, n)>::type \
- BOOST_PP_CAT(I, BOOST_PP_INC(n));
-
-#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \
- typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \
- BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n));
-
-#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \
- typedef typename fusion::result_of::value_of<BOOST_PP_CAT(I, n)>::type \
- BOOST_PP_CAT(T, n);
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/set/detail/as_set.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_SET_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_NEXT_ITERATOR
-#undef BOOST_FUSION_NEXT_CALL_ITERATOR
-#undef BOOST_FUSION_VALUE_OF_ITERATOR
-
-BOOST_FUSION_BARRIER_END
-}}}
-
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(output: null)
-#endif
-
-#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
+// Without variadics, we will use the PP version
///////////////////////////////////////////////////////////////////////////////
+# include <boost/fusion/container/set/detail/cpp03/as_set.hpp>
-#define N BOOST_PP_ITERATION()
-
- template <>
- struct as_set<N>
- {
- template <typename I0>
- struct apply
- {
- BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _)
- BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _)
- typedef set<BOOST_PP_ENUM_PARAMS(N, T)> type;
- };
-
- template <typename Iterator>
- BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
- static typename apply<Iterator>::type
- call(Iterator const& i0)
- {
- typedef apply<Iterator> gen;
- typedef typename gen::type result;
- BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _)
- return result(BOOST_PP_ENUM_PARAMS(N, *i));
- }
- };
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
+#endif
diff --git a/boost/fusion/container/set/detail/cpp03/as_set.hpp b/boost/fusion/container/set/detail/cpp03/as_set.hpp
new file mode 100644
index 0000000000..c9159314b3
--- /dev/null
+++ b/boost/fusion/container/set/detail/cpp03/as_set.hpp
@@ -0,0 +1,139 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#ifndef BOOST_PP_IS_ITERATING
+#if !defined(FUSION_AS_SET_0932005_1341)
+#define FUSION_AS_SET_0932005_1341
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/inc.hpp>
+#include <boost/preprocessor/dec.hpp>
+#include <boost/fusion/container/set/set.hpp>
+#include <boost/fusion/iterator/value_of.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/next.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+BOOST_FUSION_BARRIER_BEGIN
+
+ template <int size>
+ struct as_set;
+
+ template <>
+ struct as_set<0>
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ typedef set<> type;
+ };
+
+ template <typename Iterator>
+ BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
+ static typename apply<Iterator>::type
+ call(Iterator)
+ {
+ return set<>();
+ }
+ };
+
+BOOST_FUSION_BARRIER_END
+}}}
+
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/container/set/detail/cpp03/preprocessed/as_set.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/as_set" FUSION_MAX_SET_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
+{
+BOOST_FUSION_BARRIER_BEGIN
+
+#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \
+ typedef typename fusion::result_of::next<BOOST_PP_CAT(I, n)>::type \
+ BOOST_PP_CAT(I, BOOST_PP_INC(n));
+
+#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \
+ typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \
+ BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n));
+
+#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \
+ typedef typename fusion::result_of::value_of<BOOST_PP_CAT(I, n)>::type \
+ BOOST_PP_CAT(T, n);
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/set/detail/cpp03/as_set.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_SET_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_NEXT_ITERATOR
+#undef BOOST_FUSION_NEXT_CALL_ITERATOR
+#undef BOOST_FUSION_VALUE_OF_ITERATOR
+
+BOOST_FUSION_BARRIER_END
+}}}
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(output: null)
+#endif
+
+#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ template <>
+ struct as_set<N>
+ {
+ template <typename I0>
+ struct apply
+ {
+ BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _)
+ BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _)
+ typedef set<BOOST_PP_ENUM_PARAMS(N, T)> type;
+ };
+
+ template <typename Iterator>
+ BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
+ static typename apply<Iterator>::type
+ call(Iterator const& i0)
+ {
+ typedef apply<Iterator> gen;
+ typedef typename gen::type result;
+ BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _)
+ return result(BOOST_PP_ENUM_PARAMS(N, *i));
+ }
+ };
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+
diff --git a/boost/fusion/container/set/detail/cpp03/limits.hpp b/boost/fusion/container/set/detail/cpp03/limits.hpp
new file mode 100644
index 0000000000..2b800abfed
--- /dev/null
+++ b/boost/fusion/container/set/detail/cpp03/limits.hpp
@@ -0,0 +1,28 @@
+/*=============================================================================
+ 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_SET_LIMITS_09162005_1103)
+#define FUSION_SET_LIMITS_09162005_1103
+
+#include <boost/fusion/support/config.hpp>
+#include <boost/fusion/container/vector/detail/cpp03/limits.hpp>
+
+#if !defined(FUSION_MAX_SET_SIZE)
+# define FUSION_MAX_SET_SIZE FUSION_MAX_VECTOR_SIZE
+#else
+# if FUSION_MAX_SET_SIZE < 3
+# undef FUSION_MAX_SET_SIZE
+# if (FUSION_MAX_VECTOR_SIZE > 10)
+# define FUSION_MAX_SET_SIZE 10
+# else
+# define FUSION_MAX_SET_SIZE FUSION_MAX_VECTOR_SIZE
+# endif
+# endif
+#endif
+
+#define FUSION_MAX_SET_SIZE_STR BOOST_PP_STRINGIZE(BOOST_FUSION_PP_ROUND_UP(FUSION_MAX_SET_SIZE))
+
+#endif
diff --git a/boost/fusion/container/set/detail/preprocessed/as_set.hpp b/boost/fusion/container/set/detail/cpp03/preprocessed/as_set.hpp
index 4231dcb180..da257ad900 100644
--- a/boost/fusion/container/set/detail/preprocessed/as_set.hpp
+++ b/boost/fusion/container/set/detail/cpp03/preprocessed/as_set.hpp
@@ -8,15 +8,15 @@
==============================================================================*/
#if FUSION_MAX_SET_SIZE <= 10
-#include <boost/fusion/container/set/detail/preprocessed/as_set10.hpp>
+#include <boost/fusion/container/set/detail/cpp03/preprocessed/as_set10.hpp>
#elif FUSION_MAX_SET_SIZE <= 20
-#include <boost/fusion/container/set/detail/preprocessed/as_set20.hpp>
+#include <boost/fusion/container/set/detail/cpp03/preprocessed/as_set20.hpp>
#elif FUSION_MAX_SET_SIZE <= 30
-#include <boost/fusion/container/set/detail/preprocessed/as_set30.hpp>
+#include <boost/fusion/container/set/detail/cpp03/preprocessed/as_set30.hpp>
#elif FUSION_MAX_SET_SIZE <= 40
-#include <boost/fusion/container/set/detail/preprocessed/as_set40.hpp>
+#include <boost/fusion/container/set/detail/cpp03/preprocessed/as_set40.hpp>
#elif FUSION_MAX_SET_SIZE <= 50
-#include <boost/fusion/container/set/detail/preprocessed/as_set50.hpp>
+#include <boost/fusion/container/set/detail/cpp03/preprocessed/as_set50.hpp>
#else
#error "FUSION_MAX_SET_SIZE out of bounds for preprocessed headers"
#endif
diff --git a/boost/fusion/container/set/detail/preprocessed/as_set10.hpp b/boost/fusion/container/set/detail/cpp03/preprocessed/as_set10.hpp
index 019b0b7970..019b0b7970 100644
--- a/boost/fusion/container/set/detail/preprocessed/as_set10.hpp
+++ b/boost/fusion/container/set/detail/cpp03/preprocessed/as_set10.hpp
diff --git a/boost/fusion/container/set/detail/preprocessed/as_set20.hpp b/boost/fusion/container/set/detail/cpp03/preprocessed/as_set20.hpp
index 8299b60794..8299b60794 100644
--- a/boost/fusion/container/set/detail/preprocessed/as_set20.hpp
+++ b/boost/fusion/container/set/detail/cpp03/preprocessed/as_set20.hpp
diff --git a/boost/fusion/container/set/detail/preprocessed/as_set30.hpp b/boost/fusion/container/set/detail/cpp03/preprocessed/as_set30.hpp
index b8f8adb7a2..b8f8adb7a2 100644
--- a/boost/fusion/container/set/detail/preprocessed/as_set30.hpp
+++ b/boost/fusion/container/set/detail/cpp03/preprocessed/as_set30.hpp
diff --git a/boost/fusion/container/set/detail/preprocessed/as_set40.hpp b/boost/fusion/container/set/detail/cpp03/preprocessed/as_set40.hpp
index de5091f8c3..de5091f8c3 100644
--- a/boost/fusion/container/set/detail/preprocessed/as_set40.hpp
+++ b/boost/fusion/container/set/detail/cpp03/preprocessed/as_set40.hpp
diff --git a/boost/fusion/container/set/detail/preprocessed/as_set50.hpp b/boost/fusion/container/set/detail/cpp03/preprocessed/as_set50.hpp
index d169b04faf..d169b04faf 100644
--- a/boost/fusion/container/set/detail/preprocessed/as_set50.hpp
+++ b/boost/fusion/container/set/detail/cpp03/preprocessed/as_set50.hpp
diff --git a/boost/fusion/container/set/detail/preprocessed/set.hpp b/boost/fusion/container/set/detail/cpp03/preprocessed/set.hpp
index a64fab2c8e..715d5744f9 100644
--- a/boost/fusion/container/set/detail/preprocessed/set.hpp
+++ b/boost/fusion/container/set/detail/cpp03/preprocessed/set.hpp
@@ -8,15 +8,15 @@
==============================================================================*/
#if FUSION_MAX_SET_SIZE <= 10
-#include <boost/fusion/container/set/detail/preprocessed/set10.hpp>
+#include <boost/fusion/container/set/detail/cpp03/preprocessed/set10.hpp>
#elif FUSION_MAX_SET_SIZE <= 20
-#include <boost/fusion/container/set/detail/preprocessed/set20.hpp>
+#include <boost/fusion/container/set/detail/cpp03/preprocessed/set20.hpp>
#elif FUSION_MAX_SET_SIZE <= 30
-#include <boost/fusion/container/set/detail/preprocessed/set30.hpp>
+#include <boost/fusion/container/set/detail/cpp03/preprocessed/set30.hpp>
#elif FUSION_MAX_SET_SIZE <= 40
-#include <boost/fusion/container/set/detail/preprocessed/set40.hpp>
+#include <boost/fusion/container/set/detail/cpp03/preprocessed/set40.hpp>
#elif FUSION_MAX_SET_SIZE <= 50
-#include <boost/fusion/container/set/detail/preprocessed/set50.hpp>
+#include <boost/fusion/container/set/detail/cpp03/preprocessed/set50.hpp>
#else
#error "FUSION_MAX_SET_SIZE out of bounds for preprocessed headers"
#endif
diff --git a/boost/fusion/container/set/detail/preprocessed/set10.hpp b/boost/fusion/container/set/detail/cpp03/preprocessed/set10.hpp
index d2eba4c8f5..d2eba4c8f5 100644
--- a/boost/fusion/container/set/detail/preprocessed/set10.hpp
+++ b/boost/fusion/container/set/detail/cpp03/preprocessed/set10.hpp
diff --git a/boost/fusion/container/set/detail/preprocessed/set10_fwd.hpp b/boost/fusion/container/set/detail/cpp03/preprocessed/set10_fwd.hpp
index 8b6253dc3b..8b6253dc3b 100644
--- a/boost/fusion/container/set/detail/preprocessed/set10_fwd.hpp
+++ b/boost/fusion/container/set/detail/cpp03/preprocessed/set10_fwd.hpp
diff --git a/boost/fusion/container/set/detail/preprocessed/set20.hpp b/boost/fusion/container/set/detail/cpp03/preprocessed/set20.hpp
index 500e726e80..500e726e80 100644
--- a/boost/fusion/container/set/detail/preprocessed/set20.hpp
+++ b/boost/fusion/container/set/detail/cpp03/preprocessed/set20.hpp
diff --git a/boost/fusion/container/set/detail/preprocessed/set20_fwd.hpp b/boost/fusion/container/set/detail/cpp03/preprocessed/set20_fwd.hpp
index acbb56dee0..acbb56dee0 100644
--- a/boost/fusion/container/set/detail/preprocessed/set20_fwd.hpp
+++ b/boost/fusion/container/set/detail/cpp03/preprocessed/set20_fwd.hpp
diff --git a/boost/fusion/container/set/detail/preprocessed/set30.hpp b/boost/fusion/container/set/detail/cpp03/preprocessed/set30.hpp
index 6c92bead0e..6c92bead0e 100644
--- a/boost/fusion/container/set/detail/preprocessed/set30.hpp
+++ b/boost/fusion/container/set/detail/cpp03/preprocessed/set30.hpp
diff --git a/boost/fusion/container/set/detail/preprocessed/set30_fwd.hpp b/boost/fusion/container/set/detail/cpp03/preprocessed/set30_fwd.hpp
index 9c774b0dad..9c774b0dad 100644
--- a/boost/fusion/container/set/detail/preprocessed/set30_fwd.hpp
+++ b/boost/fusion/container/set/detail/cpp03/preprocessed/set30_fwd.hpp
diff --git a/boost/fusion/container/set/detail/preprocessed/set40.hpp b/boost/fusion/container/set/detail/cpp03/preprocessed/set40.hpp
index d3c3e5eb58..d3c3e5eb58 100644
--- a/boost/fusion/container/set/detail/preprocessed/set40.hpp
+++ b/boost/fusion/container/set/detail/cpp03/preprocessed/set40.hpp
diff --git a/boost/fusion/container/set/detail/preprocessed/set40_fwd.hpp b/boost/fusion/container/set/detail/cpp03/preprocessed/set40_fwd.hpp
index 2f251c108c..2f251c108c 100644
--- a/boost/fusion/container/set/detail/preprocessed/set40_fwd.hpp
+++ b/boost/fusion/container/set/detail/cpp03/preprocessed/set40_fwd.hpp
diff --git a/boost/fusion/container/set/detail/preprocessed/set50.hpp b/boost/fusion/container/set/detail/cpp03/preprocessed/set50.hpp
index 1d2dfd446d..1d2dfd446d 100644
--- a/boost/fusion/container/set/detail/preprocessed/set50.hpp
+++ b/boost/fusion/container/set/detail/cpp03/preprocessed/set50.hpp
diff --git a/boost/fusion/container/set/detail/preprocessed/set50_fwd.hpp b/boost/fusion/container/set/detail/cpp03/preprocessed/set50_fwd.hpp
index 478b98b578..478b98b578 100644
--- a/boost/fusion/container/set/detail/preprocessed/set50_fwd.hpp
+++ b/boost/fusion/container/set/detail/cpp03/preprocessed/set50_fwd.hpp
diff --git a/boost/fusion/container/set/detail/preprocessed/set_fwd.hpp b/boost/fusion/container/set/detail/cpp03/preprocessed/set_fwd.hpp
index 28a3e814d2..31e8e411bf 100644
--- a/boost/fusion/container/set/detail/preprocessed/set_fwd.hpp
+++ b/boost/fusion/container/set/detail/cpp03/preprocessed/set_fwd.hpp
@@ -8,15 +8,15 @@
==============================================================================*/
#if FUSION_MAX_SET_SIZE <= 10
-#include <boost/fusion/container/set/detail/preprocessed/set10_fwd.hpp>
+#include <boost/fusion/container/set/detail/cpp03/preprocessed/set10_fwd.hpp>
#elif FUSION_MAX_SET_SIZE <= 20
-#include <boost/fusion/container/set/detail/preprocessed/set20_fwd.hpp>
+#include <boost/fusion/container/set/detail/cpp03/preprocessed/set20_fwd.hpp>
#elif FUSION_MAX_SET_SIZE <= 30
-#include <boost/fusion/container/set/detail/preprocessed/set30_fwd.hpp>
+#include <boost/fusion/container/set/detail/cpp03/preprocessed/set30_fwd.hpp>
#elif FUSION_MAX_SET_SIZE <= 40
-#include <boost/fusion/container/set/detail/preprocessed/set40_fwd.hpp>
+#include <boost/fusion/container/set/detail/cpp03/preprocessed/set40_fwd.hpp>
#elif FUSION_MAX_SET_SIZE <= 50
-#include <boost/fusion/container/set/detail/preprocessed/set50_fwd.hpp>
+#include <boost/fusion/container/set/detail/cpp03/preprocessed/set50_fwd.hpp>
#else
#error "FUSION_MAX_SET_SIZE out of bounds for preprocessed headers"
#endif
diff --git a/boost/fusion/container/set/detail/cpp03/set.hpp b/boost/fusion/container/set/detail/cpp03/set.hpp
new file mode 100644
index 0000000000..46191c5c63
--- /dev/null
+++ b/boost/fusion/container/set/detail/cpp03/set.hpp
@@ -0,0 +1,106 @@
+/*=============================================================================
+ 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_SET_09162005_1104)
+#define FUSION_SET_09162005_1104
+
+#include <boost/fusion/support/config.hpp>
+#include <boost/fusion/support/is_sequence.hpp>
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/support/category_of.hpp>
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/fusion/container/set/set_fwd.hpp>
+#include <boost/fusion/container/set/detail/begin_impl.hpp>
+#include <boost/fusion/container/set/detail/end_impl.hpp>
+#include <boost/fusion/container/set/detail/value_of_impl.hpp>
+#include <boost/fusion/container/set/detail/deref_data_impl.hpp>
+#include <boost/fusion/container/set/detail/deref_impl.hpp>
+#include <boost/fusion/container/set/detail/key_of_impl.hpp>
+#include <boost/fusion/container/set/detail/value_of_data_impl.hpp>
+#include <boost/fusion/container/vector/vector.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/core/enable_if.hpp>
+
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/container/set/detail/cpp03/preprocessed/set.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/set" FUSION_MAX_SET_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 void_;
+ struct fusion_sequence_tag;
+
+ template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_SET_SIZE, typename T)>
+ struct set : sequence_base<set<BOOST_PP_ENUM_PARAMS(FUSION_MAX_SET_SIZE, T)> >
+ {
+ struct category : forward_traversal_tag, associative_tag {};
+
+ typedef set_tag fusion_tag;
+ typedef fusion_sequence_tag tag; // this gets picked up by MPL
+ typedef mpl::false_ is_view;
+
+ typedef vector<
+ BOOST_PP_ENUM_PARAMS(FUSION_MAX_SET_SIZE, T)>
+ storage_type;
+
+ typedef typename storage_type::size size;
+
+ BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
+ set()
+ : data() {}
+
+ template <typename Sequence>
+ BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
+ set(Sequence const& rhs
+ , typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0)
+ : data(rhs) {}
+
+ #include <boost/fusion/container/set/detail/cpp03/set_forward_ctor.hpp>
+
+ template <typename T>
+ BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
+ set&
+ operator=(T const& rhs)
+ {
+ data = rhs;
+ return *this;
+ }
+
+ BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
+ storage_type& get_data() { return data; }
+ BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
+ storage_type const& get_data() const { return data; }
+
+ private:
+
+ storage_type data;
+ };
+}}
+
+#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/set/detail/set_forward_ctor.hpp b/boost/fusion/container/set/detail/cpp03/set_forward_ctor.hpp
index 5d3961048c..aa90b60111 100644
--- a/boost/fusion/container/set/detail/set_forward_ctor.hpp
+++ b/boost/fusion/container/set/detail/cpp03/set_forward_ctor.hpp
@@ -13,7 +13,7 @@
#include <boost/preprocessor/repetition/enum_binary_params.hpp>
#define BOOST_PP_FILENAME_1 \
- <boost/fusion/container/set/detail/set_forward_ctor.hpp>
+ <boost/fusion/container/set/detail/cpp03/set_forward_ctor.hpp>
#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_SET_SIZE)
#include BOOST_PP_ITERATE()
diff --git a/boost/fusion/container/set/detail/cpp03/set_fwd.hpp b/boost/fusion/container/set/detail/cpp03/set_fwd.hpp
new file mode 100644
index 0000000000..f50f6083ea
--- /dev/null
+++ b/boost/fusion/container/set/detail/cpp03/set_fwd.hpp
@@ -0,0 +1,53 @@
+/*=============================================================================
+ 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_SET_FORWARD_09162005_1102)
+#define FUSION_SET_FORWARD_09162005_1102
+
+#include <boost/fusion/support/config.hpp>
+#include <boost/fusion/container/set/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/set/detail/cpp03/preprocessed/set_fwd.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/set" FUSION_MAX_SET_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_;
+ struct set_tag;
+ struct set_iterator_tag;
+
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_SET_SIZE, typename T, void_)
+ >
+ struct set;
+}}
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(output: null)
+#endif
+
+#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
+
+#endif