|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r85669 - in branches/release/boost/fusion: . adapted/struct/detail algorithm/auxiliary container container/deque container/deque/detail container/deque/detail/cpp03 container/deque/detail/preprocessed container/generation container/generation/detail container/list container/list/detail container/list/detail/preprocessed container/map container/map/detail container/map/detail/cpp03 container/map/detail/preprocessed container/vector container/vector/detail functional/adapter include iterator/detail sequence/intrinsic/detail support view/detail view/iterator_range/detail view/nview view/zip_view view/zip_view/detail
From: joel_at_[hidden]
Date: 2013-09-15 02:27:58
Author: djowel
Date: 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013)
New Revision: 85669
URL: http://svn.boost.org/trac/boost/changeset/85669
Log:
big merge from trunk
Added:
branches/release/boost/fusion/algorithm/auxiliary/move.hpp
- copied, changed from r82583, trunk/boost/fusion/algorithm/auxiliary/move.hpp
branches/release/boost/fusion/container/deque/detail/build_deque.hpp
- copied unchanged from r82784, trunk/boost/fusion/container/deque/detail/build_deque.hpp
branches/release/boost/fusion/container/deque/detail/cpp03/
- copied from r82784, trunk/boost/fusion/container/deque/detail/cpp03/
branches/release/boost/fusion/container/deque/detail/deque_keyed_values.hpp
- copied unchanged from r82784, trunk/boost/fusion/container/deque/detail/deque_keyed_values.hpp
branches/release/boost/fusion/container/generation/detail/pp_deque_tie.hpp
- copied unchanged from r82696, trunk/boost/fusion/container/generation/detail/pp_deque_tie.hpp
branches/release/boost/fusion/container/generation/detail/pp_make_deque.hpp
- copied unchanged from r82696, trunk/boost/fusion/container/generation/detail/pp_make_deque.hpp
branches/release/boost/fusion/container/generation/detail/pp_make_map.hpp
- copied unchanged from r82784, trunk/boost/fusion/container/generation/detail/pp_make_map.hpp
branches/release/boost/fusion/container/generation/detail/pp_map_tie.hpp
- copied unchanged from r82784, trunk/boost/fusion/container/generation/detail/pp_map_tie.hpp
branches/release/boost/fusion/container/map/detail/at_key_impl.hpp
- copied unchanged from r82784, trunk/boost/fusion/container/map/detail/at_key_impl.hpp
branches/release/boost/fusion/container/map/detail/build_map.hpp
- copied unchanged from r82784, trunk/boost/fusion/container/map/detail/build_map.hpp
branches/release/boost/fusion/container/map/detail/cpp03/
- copied from r82784, trunk/boost/fusion/container/map/detail/cpp03/
branches/release/boost/fusion/container/map/detail/map_impl.hpp
- copied unchanged from r82784, trunk/boost/fusion/container/map/detail/map_impl.hpp
branches/release/boost/fusion/container/map/detail/map_index.hpp
- copied unchanged from r82784, trunk/boost/fusion/container/map/detail/map_index.hpp
branches/release/boost/fusion/container/map/detail/value_at_key_impl.hpp
- copied unchanged from r82784, trunk/boost/fusion/container/map/detail/value_at_key_impl.hpp
branches/release/boost/fusion/container/map/map_iterator.hpp
- copied unchanged from r82784, trunk/boost/fusion/container/map/map_iterator.hpp
branches/release/boost/fusion/include/move.hpp
- copied unchanged from r82583, trunk/boost/fusion/include/move.hpp
Replaced:
branches/release/boost/fusion/container/map/detail/at_impl.hpp
- copied unchanged from r82784, trunk/boost/fusion/container/map/detail/at_impl.hpp
branches/release/boost/fusion/container/map/detail/begin_impl.hpp
- copied unchanged from r82784, trunk/boost/fusion/container/map/detail/begin_impl.hpp
branches/release/boost/fusion/container/map/detail/end_impl.hpp
- copied unchanged from r82784, trunk/boost/fusion/container/map/detail/end_impl.hpp
branches/release/boost/fusion/container/map/detail/value_at_impl.hpp
- copied unchanged from r82784, trunk/boost/fusion/container/map/detail/value_at_impl.hpp
Deleted:
branches/release/boost/fusion/container/deque/detail/as_deque.hpp
branches/release/boost/fusion/container/deque/detail/deque_forward_ctor.hpp
branches/release/boost/fusion/container/deque/detail/deque_initial_size.hpp
branches/release/boost/fusion/container/deque/detail/deque_keyed_values_call.hpp
branches/release/boost/fusion/container/deque/detail/pp_deque.hpp
branches/release/boost/fusion/container/deque/detail/pp_deque_fwd.hpp
branches/release/boost/fusion/container/deque/detail/pp_deque_keyed_values.hpp
branches/release/boost/fusion/container/deque/detail/preprocessed/
branches/release/boost/fusion/container/deque/detail/variadic_deque_keyed_values.hpp
branches/release/boost/fusion/container/deque/limits.hpp
branches/release/boost/fusion/container/map/detail/as_map.hpp
branches/release/boost/fusion/container/map/detail/convert_impl.hpp
branches/release/boost/fusion/container/map/detail/deref_data_impl.hpp
branches/release/boost/fusion/container/map/detail/deref_impl.hpp
branches/release/boost/fusion/container/map/detail/key_of_impl.hpp
branches/release/boost/fusion/container/map/detail/map_forward_ctor.hpp
branches/release/boost/fusion/container/map/detail/preprocessed/
branches/release/boost/fusion/container/map/detail/value_of_data_impl.hpp
branches/release/boost/fusion/container/map/detail/value_of_impl.hpp
branches/release/boost/fusion/container/map/limits.hpp
Properties modified:
branches/release/boost/fusion/ (props changed)
Text files modified:
branches/release/boost/fusion/adapted.hpp | 2
branches/release/boost/fusion/adapted/struct/detail/define_struct_inline.hpp | 2
branches/release/boost/fusion/algorithm/auxiliary/copy.hpp | 2
branches/release/boost/fusion/algorithm/auxiliary/move.hpp | 2
branches/release/boost/fusion/container/deque.hpp | 1
branches/release/boost/fusion/container/deque/back_extended_deque.hpp | 2
branches/release/boost/fusion/container/deque/convert.hpp | 38 +++++---
branches/release/boost/fusion/container/deque/deque.hpp | 23 ++--
branches/release/boost/fusion/container/deque/deque_fwd.hpp | 8
/dev/null | 131 -----------------------------
branches/release/boost/fusion/container/deque/detail/build_deque.hpp | 74 ++++++++++++++++
branches/release/boost/fusion/container/deque/detail/convert_impl.hpp | 17 ++-
/dev/null | 45 ----------
/dev/null | 64 --------------
branches/release/boost/fusion/container/deque/detail/deque_keyed_values.hpp | 67 +++++++++++++++
/dev/null | 58 -------------
branches/release/boost/fusion/container/deque/detail/keyed_element.hpp | 10 +-
/dev/null | 156 -----------------------------------
/dev/null | 54 ------------
/dev/null | 111 -------------------------
/dev/null | 67 ---------------
branches/release/boost/fusion/container/deque/front_extended_deque.hpp | 2
/dev/null | 32 -------
branches/release/boost/fusion/container/generation/cons_tie.hpp | 4
branches/release/boost/fusion/container/generation/deque_tie.hpp | 100 ++++------------------
branches/release/boost/fusion/container/generation/detail/pp_deque_tie.hpp | 105 +++++++++++++++++++++++
branches/release/boost/fusion/container/generation/detail/pp_make_deque.hpp | 121 +++++++++++++++++++++++++++
branches/release/boost/fusion/container/generation/detail/pp_make_map.hpp | 132 ++++++++++++++++++++++++++++++
branches/release/boost/fusion/container/generation/detail/pp_map_tie.hpp | 136 ++++++++++++++++++++++++++++++
branches/release/boost/fusion/container/generation/make_cons.hpp | 4
branches/release/boost/fusion/container/generation/make_deque.hpp | 113 +++----------------------
branches/release/boost/fusion/container/generation/make_map.hpp | 142 ++++++++------------------------
branches/release/boost/fusion/container/generation/map_tie.hpp | 136 +++++-------------------------
branches/release/boost/fusion/container/list/cons.hpp | 8
branches/release/boost/fusion/container/list/cons_fwd.hpp | 7 +
branches/release/boost/fusion/container/list/cons_iterator.hpp | 22 ++--
branches/release/boost/fusion/container/list/detail/begin_impl.hpp | 2
branches/release/boost/fusion/container/list/detail/build_cons.hpp | 6
branches/release/boost/fusion/container/list/detail/empty_impl.hpp | 4
branches/release/boost/fusion/container/list/detail/end_impl.hpp | 4
branches/release/boost/fusion/container/list/detail/list_to_cons.hpp | 4
branches/release/boost/fusion/container/list/detail/preprocessed/list10.hpp | 2
branches/release/boost/fusion/container/list/detail/preprocessed/list20.hpp | 2
branches/release/boost/fusion/container/list/detail/preprocessed/list30.hpp | 2
branches/release/boost/fusion/container/list/detail/preprocessed/list40.hpp | 2
branches/release/boost/fusion/container/list/detail/preprocessed/list50.hpp | 2
branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons10.hpp | 2
branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons20.hpp | 2
branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons30.hpp | 2
branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons40.hpp | 2
branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons50.hpp | 2
branches/release/boost/fusion/container/list/detail/reverse_cons.hpp | 6
branches/release/boost/fusion/container/list/list.hpp | 2
branches/release/boost/fusion/container/map.hpp | 1
branches/release/boost/fusion/container/map/convert.hpp | 40 +++++---
/dev/null | 130 -----------------------------
branches/release/boost/fusion/container/map/detail/at_impl.hpp | 57 ++++++++++++
branches/release/boost/fusion/container/map/detail/at_key_impl.hpp | 58 +++++++++++++
branches/release/boost/fusion/container/map/detail/begin_impl.hpp | 38 ++++++++
branches/release/boost/fusion/container/map/detail/build_map.hpp | 75 +++++++++++++++++
/dev/null | 45 ----------
/dev/null | 47 ----------
/dev/null | 45 ----------
branches/release/boost/fusion/container/map/detail/end_impl.hpp | 38 ++++++++
/dev/null | 32 -------
/dev/null | 38 --------
branches/release/boost/fusion/container/map/detail/map_impl.hpp | 176 ++++++++++++++++++++++++++++++++++++++++
branches/release/boost/fusion/container/map/detail/map_index.hpp | 19 ++++
branches/release/boost/fusion/container/map/detail/value_at_impl.hpp | 37 ++++++++
branches/release/boost/fusion/container/map/detail/value_at_key_impl.hpp | 38 ++++++++
/dev/null | 32 -------
/dev/null | 39 --------
/dev/null | 27 ------
branches/release/boost/fusion/container/map/map.hpp | 143 ++++++++++++++++++--------------
branches/release/boost/fusion/container/map/map_fwd.hpp | 50 +++-------
branches/release/boost/fusion/container/map/map_iterator.hpp | 148 +++++++++++++++++++++++++++++++++
branches/release/boost/fusion/container/vector/detail/vector_forward_ctor.hpp | 11 +-
branches/release/boost/fusion/container/vector/detail/vector_n.hpp | 87 +++++++++++++------
branches/release/boost/fusion/container/vector/vector.hpp | 11 ++
branches/release/boost/fusion/functional/adapter/unfused.hpp | 2
branches/release/boost/fusion/functional/adapter/unfused_typed.hpp | 2
branches/release/boost/fusion/include/move.hpp | 12 ++
branches/release/boost/fusion/iterator/detail/segmented_equal_to.hpp | 4
branches/release/boost/fusion/iterator/detail/segmented_iterator.hpp | 2
branches/release/boost/fusion/iterator/detail/segmented_next_impl.hpp | 2
branches/release/boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp | 4
branches/release/boost/fusion/sequence/intrinsic/detail/segmented_end.hpp | 2
branches/release/boost/fusion/support/deduce_sequence.hpp | 2
branches/release/boost/fusion/support/pair.hpp | 40 +++++++++
branches/release/boost/fusion/support/segmented_fold_until.hpp | 8
branches/release/boost/fusion/view/detail/strictest_traversal.hpp | 2
branches/release/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp | 8
branches/release/boost/fusion/view/nview/nview.hpp | 2
branches/release/boost/fusion/view/zip_view/detail/value_at_impl.hpp | 2
branches/release/boost/fusion/view/zip_view/detail/value_of_impl.hpp | 2
branches/release/boost/fusion/view/zip_view/zip_view.hpp | 4
96 files changed, 1794 insertions(+), 1814 deletions(-)
Modified: branches/release/boost/fusion/adapted.hpp
==============================================================================
--- branches/release/boost/fusion/adapted.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/adapted.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -18,7 +18,7 @@
// The std_tuple_iterator adaptor only supports implementations
// using variadic templates
-#if !defined(BOOST_NO_VARIADIC_TEMPLATES)
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
#include <boost/fusion/adapted/std_tuple.hpp>
#endif
Modified: branches/release/boost/fusion/adapted/struct/detail/define_struct_inline.hpp
==============================================================================
--- branches/release/boost/fusion/adapted/struct/detail/define_struct_inline.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/adapted/struct/detail/define_struct_inline.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -36,7 +36,7 @@
// an alternate implementation for these metafunctions is used that does not
// require such specializations. The alternate implementation takes longer
// to compile so its use is restricted to the offending compilers.
-// For MSVC, the bug was reported at https://connect.microsoft.com/VisualStudio/feedback/details/757891/c-compiler-error-involving-partial-specializations-of-nested-templates
+// For MSVC, the bug was was reported at https://connect.microsoft.com/VisualStudio/feedback/details/757891/c-compiler-error-involving-partial-specializations-of-nested-templates
// For GCC, 4.4 and earlier are no longer maintained so there is no need
// to report a bug.
#if defined(BOOST_MSVC) || (defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ <= 4)))
Modified: branches/release/boost/fusion/algorithm/auxiliary/copy.hpp
==============================================================================
--- branches/release/boost/fusion/algorithm/auxiliary/copy.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/algorithm/auxiliary/copy.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -69,7 +69,7 @@
copy(Seq1 const& src, Seq2& dest)
{
BOOST_STATIC_ASSERT(
- result_of::size<Seq1>::value == result_of::size<Seq2>::value);
+ result_of::size<Seq1>::value <= result_of::size<Seq2>::value);
detail::sequence_copy<
Seq1 const, Seq2>::
Copied and modified: branches/release/boost/fusion/algorithm/auxiliary/move.hpp (from r82583, trunk/boost/fusion/algorithm/auxiliary/move.hpp)
==============================================================================
--- trunk/boost/fusion/algorithm/auxiliary/move.hpp Mon Jan 21 14:24:01 2013 (r82583, copy source)
+++ branches/release/boost/fusion/algorithm/auxiliary/move.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -69,7 +69,7 @@
move(Seq1&& src, Seq2& dest)
{
BOOST_STATIC_ASSERT(
- result_of::size<Seq1>::value == result_of::size<Seq2>::value);
+ result_of::size<Seq1>::value <= result_of::size<Seq2>::value);
detail::sequence_move<
Seq1, Seq2>::
Modified: branches/release/boost/fusion/container/deque.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/deque.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -8,6 +8,7 @@
#if !defined(BOOST_FUSION_SEQUENCE_CONTAINER_DEQUE_24112006_2036)
#define BOOST_FUSION_SEQUENCE_CONTAINER_DEQUE_24112006_2036
+#include <boost/fusion/container/deque/deque_fwd.hpp>
#include <boost/fusion/container/deque/deque.hpp>
#include <boost/fusion/container/deque/convert.hpp>
Modified: branches/release/boost/fusion/container/deque/back_extended_deque.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/back_extended_deque.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/deque/back_extended_deque.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -31,7 +31,7 @@
: base(val, deque)
{}
-#if defined(BOOST_NO_RVALUE_REFERENCES)
+#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
template <typename Arg>
back_extended_deque(Deque const& deque, Arg& val)
: base(val, deque)
Modified: branches/release/boost/fusion/container/deque/convert.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/convert.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/deque/convert.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -1,5 +1,5 @@
/*=============================================================================
- Copyright (c) 2005-2012 Joel de Guzman
+ Copyright (c) 2005-2013 Joel de Guzman
Copyright (c) 2006 Dan Marsden
Distributed under the Boost Software License, Version 1.0. (See accompanying
@@ -8,25 +8,32 @@
#if !defined(FUSION_CONVERT_20061213_2207)
#define FUSION_CONVERT_20061213_2207
-#include <boost/fusion/container/deque/detail/as_deque.hpp>
#include <boost/fusion/container/deque/detail/convert_impl.hpp>
#include <boost/fusion/container/deque/deque.hpp>
-#include <boost/fusion/sequence/intrinsic/begin.hpp>
-#include <boost/fusion/sequence/intrinsic/size.hpp>
+
+#if !defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
+///////////////////////////////////////////////////////////////////////////////
+// C++03 (non-variadic) implementation
+///////////////////////////////////////////////////////////////////////////////
+#include <boost/fusion/container/deque/detail/cpp03/build_deque.hpp>
+
+#else
+///////////////////////////////////////////////////////////////////////////////
+// C++11 variadic implementation
+///////////////////////////////////////////////////////////////////////////////
+#include <boost/fusion/container/deque/detail/build_deque.hpp>
namespace boost { namespace fusion
{
namespace result_of
{
template <typename Sequence>
- struct as_deque
+ struct as_deque :
+ detail::build_deque<
+ typename result_of::begin<Sequence>::type
+ , typename result_of::end<Sequence>::type
+ >
{
- typedef typename
- detail::as_deque<result_of::size<Sequence>::value>
- gen;
- typedef typename gen::
- template apply<typename result_of::begin<Sequence>::type>::type
- type;
};
}
@@ -34,17 +41,18 @@
inline typename result_of::as_deque<Sequence>::type
as_deque(Sequence& seq)
{
- typedef typename result_of::as_deque<Sequence>::gen gen;
- return gen::call(fusion::begin(seq));
+ typedef result_of::as_deque<Sequence> gen;
+ return gen::call(fusion::begin(seq), fusion::end(seq));
}
template <typename Sequence>
inline typename result_of::as_deque<Sequence const>::type
as_deque(Sequence const& seq)
{
- typedef typename result_of::as_deque<Sequence const>::gen gen;
- return gen::call(fusion::begin(seq));
+ typedef result_of::as_deque<Sequence const> gen;
+ return gen::call(fusion::begin(seq), fusion::end(seq));
}
}}
#endif
+#endif
Modified: branches/release/boost/fusion/container/deque/deque.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/deque.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/deque/deque.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -8,26 +8,23 @@
#if !defined(BOOST_FUSION_DEQUE_26112006_1649)
#define BOOST_FUSION_DEQUE_26112006_1649
-#include <boost/config.hpp>
+# include <boost/fusion/container/deque/deque_fwd.hpp>
///////////////////////////////////////////////////////////////////////////////
-// With variadics, we will use the PP version
+// Without variadics, we will use the PP version
///////////////////////////////////////////////////////////////////////////////
-#if defined(BOOST_NO_VARIADIC_TEMPLATES)
-# include <boost/fusion/container/deque/detail/pp_deque.hpp>
+#if !defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
+# include <boost/fusion/container/deque/detail/cpp03/deque.hpp>
#else
-# if !defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
-# define BOOST_FUSION_HAS_VARIADIC_DEQUE
-# endif
///////////////////////////////////////////////////////////////////////////////
-// C++11 variadic interface
+// C++11 interface
///////////////////////////////////////////////////////////////////////////////
#include <boost/fusion/support/sequence_base.hpp>
#include <boost/fusion/support/detail/access.hpp>
#include <boost/fusion/support/is_sequence.hpp>
#include <boost/fusion/container/deque/detail/keyed_element.hpp>
-#include <boost/fusion/container/deque/detail/variadic_deque_keyed_values.hpp>
+#include <boost/fusion/container/deque/detail/deque_keyed_values.hpp>
#include <boost/fusion/container/deque/deque_fwd.hpp>
#include <boost/fusion/container/deque/detail/value_at_impl.hpp>
#include <boost/fusion/container/deque/detail/at_impl.hpp>
@@ -93,7 +90,7 @@
: base(seq)
{}
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
template <typename ...Elements>
deque(deque<Elements...>&& seq)
: base(std::forward<deque<Elements...>>(seq))
@@ -104,7 +101,7 @@
: base(seq)
{}
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
deque(deque&& seq)
: base(std::forward<deque>(seq))
{}
@@ -119,7 +116,7 @@
: base(detail::deque_keyed_values<Head_, Tail_...>::construct(head, tail...))
{}
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
template <typename Head_, typename ...Tail_>
explicit deque(Head_&& head, Tail_&&... tail)
: base(detail::deque_keyed_values<Head, Tail...>
@@ -147,7 +144,7 @@
return *this;
}
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
template <typename T>
deque& operator=(T&& rhs)
{
Modified: branches/release/boost/fusion/container/deque/deque_fwd.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/deque_fwd.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/deque/deque_fwd.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -13,10 +13,10 @@
///////////////////////////////////////////////////////////////////////////////
// With no decltype and variadics, we will use the C++03 version
///////////////////////////////////////////////////////////////////////////////
-#if (defined(BOOST_NO_DECLTYPE) \
- || defined(BOOST_NO_VARIADIC_TEMPLATES) \
- || defined(BOOST_NO_RVALUE_REFERENCES))
-# include <boost/fusion/container/deque/detail/pp_deque_fwd.hpp>
+#if (defined(BOOST_NO_CXX11_DECLTYPE) \
+ || defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) \
+ || defined(BOOST_NO_CXX11_RVALUE_REFERENCES))
+# include <boost/fusion/container/deque/detail/cpp03/deque_fwd.hpp>
#else
# if !defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
# define BOOST_FUSION_HAS_VARIADIC_DEQUE
Deleted: branches/release/boost/fusion/container/deque/detail/as_deque.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/detail/as_deque.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,131 +0,0 @@
-/*=============================================================================
- Copyright (c) 2005-2012 Joel de Guzman
- Copyright (c) 2006 Dan Marsden
-
- 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_DEQUE_20061213_2210)
-#define FUSION_AS_DEQUE_20061213_2210
-
-#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/deque/deque.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
-{
- template <int size>
- struct as_deque;
-
- template <>
- struct as_deque<0>
- {
- template <typename Iterator>
- struct apply
- {
- typedef deque<> type;
- };
-
- template <typename Iterator>
- static typename apply<Iterator>::type
- call(Iterator)
- {
- return deque<>();
- }
- };
-}}}
-
-#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
-#include <boost/fusion/container/deque/detail/preprocessed/as_deque.hpp>
-#else
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/as_deque" FUSION_MAX_DEQUE_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
-{
-#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/deque/detail/as_deque.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_NEXT_ITERATOR
-#undef BOOST_FUSION_NEXT_CALL_ITERATOR
-#undef BOOST_FUSION_VALUE_OF_ITERATOR
-
-}}}
-
-#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_deque<N>
- {
- template <typename I0>
- struct apply
- {
- BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _)
- BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _)
- typedef deque<BOOST_PP_ENUM_PARAMS(N, T)> type;
- };
-
- template <typename Iterator>
- 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)
-
Copied: branches/release/boost/fusion/container/deque/detail/build_deque.hpp (from r82784, trunk/boost/fusion/container/deque/detail/build_deque.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/deque/detail/build_deque.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82784, trunk/boost/fusion/container/deque/detail/build_deque.hpp)
@@ -0,0 +1,74 @@
+/*=============================================================================
+ Copyright (c) 2005-2013 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(BOOST_FUSION_BUILD_DEQUE_02032013_1921)
+#define BOOST_FUSION_BUILD_DEQUE_02032013_1921
+
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/value_of.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/container/deque/front_extended_deque.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <typename First, typename Last
+ , bool is_empty = result_of::equal_to<First, Last>::value>
+ struct build_deque;
+
+ template <typename First, typename Last>
+ struct build_deque<First, Last, true>
+ {
+ typedef deque<> type;
+ static type
+ call(First const&, Last const&)
+ {
+ return type();
+ }
+ };
+
+ template <typename T, typename Rest>
+ struct push_front_deque;
+
+ template <typename T, typename ...Rest>
+ struct push_front_deque<T, deque<Rest...>>
+ {
+ typedef deque<T, Rest...> type;
+
+ static type
+ call(T const& first, deque<Rest...> const& rest)
+ {
+ return type(front_extended_deque<deque<Rest...>, T>(rest, first));
+ }
+ };
+
+ template <typename First, typename Last>
+ struct build_deque<First, Last, false>
+ {
+ typedef
+ build_deque<typename result_of::next<First>::type, Last>
+ next_build_deque;
+
+ typedef push_front_deque<
+ typename result_of::value_of<First>::type
+ , typename next_build_deque::type>
+ push_front;
+
+ typedef typename push_front::type type;
+
+ static type
+ call(First const& f, Last const& l)
+ {
+ typename result_of::value_of<First>::type v = *f;
+ return push_front::call(
+ v, next_build_deque::call(fusion::next(f), l));
+ }
+ };
+}}}
+
+#endif
Modified: branches/release/boost/fusion/container/deque/detail/convert_impl.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/detail/convert_impl.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/deque/detail/convert_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -8,7 +8,7 @@
#if !defined(FUSION_CONVERT_IMPL_20061213_2207)
#define FUSION_CONVERT_IMPL_20061213_2207
-#include <boost/fusion/container/deque/detail/as_deque.hpp>
+#include <boost/fusion/container/deque/convert.hpp>
#include <boost/fusion/container/deque/deque.hpp>
#include <boost/fusion/sequence/intrinsic/begin.hpp>
#include <boost/fusion/sequence/intrinsic/size.hpp>
@@ -17,6 +17,12 @@
{
struct deque_tag;
+ namespace result_of
+ {
+ template <typename Sequence>
+ struct as_deque;
+ }
+
namespace extension
{
template <typename T>
@@ -28,14 +34,11 @@
template <typename Sequence>
struct apply
{
- typedef detail::as_deque<result_of::size<Sequence>::value> gen;
- typedef typename gen::
- template apply<typename result_of::begin<Sequence>::type>::type
- type;
-
+ typedef result_of::as_deque<Sequence> gen;
+ typedef typename gen::type type;
static type call(Sequence& seq)
{
- return gen::call(fusion::begin(seq));
+ return gen::call(seq);
}
};
};
Deleted: branches/release/boost/fusion/container/deque/detail/deque_forward_ctor.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/detail/deque_forward_ctor.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,45 +0,0 @@
-/*=============================================================================
- Copyright (c) 2005-2012 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
-
- 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(BOOST_PP_IS_ITERATING)
-#if !defined(BOOST_FUSION_SEQUENCE_DEQUE_DETAIL_DEQUE_FORWARD_CTOR_04122006_2212)
-#define BOOST_FUSION_SEQUENCE_DEQUE_DETAIL_DEQUE_FORWARD_CTOR_04122006_2212
-
-#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
-#error "C++03 only! This file should not have been included"
-#endif
-
-#define FUSION_DEQUE_FORWARD_CTOR_FORWARD(z, n, _) std::forward<T##n>(t##n)
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_shifted_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-
-#define BOOST_PP_FILENAME_1 \
- <boost/fusion/container/deque/detail/deque_forward_ctor.hpp>
-#define BOOST_PP_ITERATION_LIMITS (2, FUSION_MAX_DEQUE_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef FUSION_DEQUE_FORWARD_CTOR_FORWARD
-#endif
-#else
-
-#define N BOOST_PP_ITERATION()
-
-deque(BOOST_PP_ENUM_BINARY_PARAMS(N, typename add_reference<typename add_const<T, >::type>::type t))
- : base(detail::deque_keyed_values<BOOST_PP_ENUM_PARAMS(N, T)>::construct(BOOST_PP_ENUM_PARAMS(N, t)))
-{}
-
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
-deque(BOOST_PP_ENUM_BINARY_PARAMS(N, T, && t))
- : base(detail::deque_keyed_values<BOOST_PP_ENUM_PARAMS(N, T)>::
- forward_(BOOST_PP_ENUM(N, FUSION_DEQUE_FORWARD_CTOR_FORWARD, _)))
-{}
-#endif
-
-#undef N
-#endif
Deleted: branches/release/boost/fusion/container/deque/detail/deque_initial_size.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/detail/deque_initial_size.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,64 +0,0 @@
-/*=============================================================================
- Copyright (c) 2005-2012 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
-
- 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(BOOST_FUSION_DEQUE_DETAIL_DEQUE_INITIAL_SIZE_26112006_2139)
-#define BOOST_FUSION_DEQUE_DETAIL_DEQUE_INITIAL_SIZE_26112006_2139
-
-#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
-#error "C++03 only! This file should not have been included"
-#endif
-
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/mpl/find.hpp>
-#include <boost/mpl/begin.hpp>
-#include <boost/mpl/distance.hpp>
-#include <boost/mpl/equal_to.hpp>
-#include <boost/mpl/vector.hpp>
-
-namespace boost { namespace fusion
-{
- struct void_;
-}}
-
-#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
-#include <boost/fusion/container/deque/detail/preprocessed/deque_initial_size.hpp>
-#else
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/deque_initial_size" FUSION_MAX_DEQUE_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_DEQUE_SIZE, typename T)>
- struct deque_initial_size
- {
- typedef mpl::vector<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, T)> args;
- typedef typename mpl::find<args, void_>::type first_void;
- typedef typename mpl::distance<typename mpl::begin<args>::type, first_void>::type type;
- };
-}}}
-
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(output: null)
-#endif
-
-#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
-
-#endif
Copied: branches/release/boost/fusion/container/deque/detail/deque_keyed_values.hpp (from r82784, trunk/boost/fusion/container/deque/detail/deque_keyed_values.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/deque/detail/deque_keyed_values.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82784, trunk/boost/fusion/container/deque/detail/deque_keyed_values.hpp)
@@ -0,0 +1,67 @@
+/*=============================================================================
+ Copyright (c) 2005-2012 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ 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(BOOST_FUSION_DEQUE_DETAIL_CPP11_DEQUE_KEYED_VALUES_07042012_1901)
+#define BOOST_FUSION_DEQUE_DETAIL_CPP11_DEQUE_KEYED_VALUES_07042012_1901
+
+#include <boost/fusion/container/deque/detail/keyed_element.hpp>
+#include <boost/type_traits/add_reference.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/mpl/int.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template<typename Key, typename Value, typename Rest>
+ struct keyed_element;
+
+ template <typename N, typename ...Elements>
+ struct deque_keyed_values_impl;
+
+ template <typename N, typename Head, typename ...Tail>
+ struct deque_keyed_values_impl<N, Head, Tail...>
+ {
+ typedef mpl::int_<(N::value + 1)> next_index;
+ typedef typename deque_keyed_values_impl<next_index, Tail...>::type tail;
+ typedef keyed_element<N, Head, tail> type;
+
+ static type construct(
+ typename detail::call_param<Head>::type head
+ , typename detail::call_param<Tail>::type... tail)
+ {
+ return type(
+ head
+ , deque_keyed_values_impl<next_index, Tail...>::construct(tail...)
+ );
+ }
+
+ template <typename Head_, typename ...Tail_>
+ static type forward_(Head_&& head, Tail_&&... tail)
+ {
+ return type(
+ std::forward<Head_>(head)
+ , deque_keyed_values_impl<next_index, Tail_...>::
+ forward_(std::forward<Tail_>(tail)...)
+ );
+ }
+ };
+
+ struct nil_keyed_element;
+
+ template <typename N>
+ struct deque_keyed_values_impl<N>
+ {
+ typedef nil_keyed_element type;
+ static type construct() { return type(); }
+ static type forward_() { return type(); }
+ };
+
+ template <typename ...Elements>
+ struct deque_keyed_values
+ : deque_keyed_values_impl<mpl::int_<0>, Elements...> {};
+}}}
+
+#endif
Deleted: branches/release/boost/fusion/container/deque/detail/deque_keyed_values_call.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/detail/deque_keyed_values_call.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,58 +0,0 @@
-/*=============================================================================
- Copyright (c) 2005-2012 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
-
- 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(BOOST_PP_IS_ITERATING)
-#if !defined(BOOST_FUSION_SEQUENCE_DEQUE_DETAIL_DEQUE_KEYED_VALUES_CALL_04122006_2211)
-#define BOOST_FUSION_SEQUENCE_DEQUE_DETAIL_DEQUE_KEYED_VALUES_CALL_04122006_2211
-
-#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
-#error "C++03 only! This file should not have been included"
-#endif
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_shifted_params.hpp>
-#include <boost/preprocessor/repetition/enum_shifted.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-
-#define FUSION_DEQUE_KEYED_VALUES_FORWARD(z, n, _) \
- std::forward<BOOST_PP_CAT(T, n)>(BOOST_PP_CAT(t, n))
-
-#define BOOST_PP_FILENAME_1 \
- <boost/fusion/container/deque/detail/deque_keyed_values_call.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef FUSION_DEQUE_KEYED_VALUES_FORWARD
-#endif
-#else
-
-#define N BOOST_PP_ITERATION()
-
- static type construct(BOOST_PP_ENUM_BINARY_PARAMS(N, typename add_reference<typename add_const<T, >::type>::type t))
- {
- return type(t0,
- deque_keyed_values_impl<
- next_index
- #if N > 1
- , BOOST_PP_ENUM_SHIFTED_PARAMS(N, T)
- #endif
- >::call(BOOST_PP_ENUM_SHIFTED_PARAMS(N, t)));
- }
-
- static type forward_(BOOST_PP_ENUM_BINARY_PARAMS(N, T, && t))
- {
- return type(std::forward<T0>(t0),
- deque_keyed_values_impl<
- next_index
- #if N > 1
- , BOOST_PP_ENUM_SHIFTED_PARAMS(N, T)
- #endif
- >::forward_(BOOST_PP_ENUM_SHIFTED(N, FUSION_DEQUE_KEYED_VALUES_FORWARD, _)));
- }
-
-#undef N
-#endif
Modified: branches/release/boost/fusion/container/deque/detail/keyed_element.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/detail/keyed_element.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/deque/detail/keyed_element.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -51,7 +51,7 @@
: Rest(rhs.get_base()), value_(rhs.value_)
{}
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
keyed_element(keyed_element&& rhs)
: Rest(std::forward<Rest>(rhs.forward_base()))
, value_(std::forward<Value>(rhs.value_))
@@ -63,7 +63,7 @@
: Rest(rhs.get_base()), value_(rhs.value_)
{}
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
#endif
Rest& get_base()
@@ -76,7 +76,7 @@
return *this;
}
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
Rest&& forward_base()
{
return std::forward<Rest>(*static_cast<Rest*>(this));
@@ -99,7 +99,7 @@
: Rest(rest), value_(value)
{}
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
keyed_element(Value&& value, Rest&& rest)
: Rest(std::forward<Rest>(rest))
, value_(std::forward<Value>(value))
@@ -125,7 +125,7 @@
return *this;
}
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
keyed_element& operator=(keyed_element&& rhs)
{
base::operator=(std::forward<keyed_element>(rhs));
Deleted: branches/release/boost/fusion/container/deque/detail/pp_deque.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/detail/pp_deque.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,156 +0,0 @@
-/*=============================================================================
- Copyright (c) 2005-2012 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
-
- 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(BOOST_PP_FUSION_DEQUE_26112006_1649)
-#define BOOST_PP_FUSION_DEQUE_26112006_1649
-
-#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
-#error "C++03 only! This file should not have been included"
-#endif
-
-#include <boost/fusion/container/deque/limits.hpp>
-#include <boost/fusion/container/deque/front_extended_deque.hpp>
-#include <boost/fusion/container/deque/back_extended_deque.hpp>
-#include <boost/fusion/container/deque/detail/pp_deque_keyed_values.hpp>
-#include <boost/fusion/container/deque/detail/deque_initial_size.hpp>
-#include <boost/fusion/support/sequence_base.hpp>
-#include <boost/fusion/container/deque/detail/keyed_element.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
-#include <boost/type_traits/add_reference.hpp>
-#include <boost/type_traits/add_const.hpp>
-#include <boost/type_traits/is_convertible.hpp>
-
-#include <boost/fusion/container/deque/deque_fwd.hpp>
-#include <boost/fusion/container/deque/detail/value_at_impl.hpp>
-#include <boost/fusion/container/deque/detail/at_impl.hpp>
-#include <boost/fusion/container/deque/detail/begin_impl.hpp>
-#include <boost/fusion/container/deque/detail/end_impl.hpp>
-#include <boost/fusion/container/deque/detail/is_sequence_impl.hpp>
-#include <boost/fusion/sequence/intrinsic/begin.hpp>
-#include <boost/mpl/bool.hpp>
-
-#include <boost/fusion/support/sequence_base.hpp>
-#include <boost/fusion/support/void.hpp>
-#include <boost/utility/enable_if.hpp>
-
-#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
-#include <boost/fusion/container/deque/detail/preprocessed/deque.hpp>
-#else
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/deque" FUSION_MAX_DEQUE_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 deque_tag;
-
- template<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, typename T)>
- struct deque
- :
- detail::deque_keyed_values<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, T)>::type,
- sequence_base<deque<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, T)> >
- {
- typedef deque_tag fusion_tag;
- typedef bidirectional_traversal_tag category;
- typedef typename detail::deque_keyed_values<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, T)>::type base;
- typedef typename detail::deque_initial_size<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, T)>::type size;
- typedef mpl::int_<size::value> next_up;
- typedef mpl::int_<
- mpl::if_<mpl::equal_to<size, mpl::int_<0> >, mpl::int_<0>, mpl::int_<-1> >::type::value> next_down;
- typedef mpl::false_ is_view;
-
-#include <boost/fusion/container/deque/detail/deque_forward_ctor.hpp>
-
- deque()
- {}
-
- explicit deque(typename add_reference<typename add_const<T0>::type>::type t0)
- : base(t0, detail::nil_keyed_element())
- {}
-
- explicit deque(deque const& rhs)
- : base(rhs)
- {}
-
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
- explicit deque(T0&& t0)
- : base(std::forward<T0>(t0), detail::nil_keyed_element())
- {}
-
- explicit deque(deque&& rhs)
- : base(std::forward<deque>(rhs))
- {}
-#endif
-
- template<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, typename U)>
- deque(deque<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, U)> const& seq)
- : base(seq)
- {}
-
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
- template<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, typename U)>
- deque(deque<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, U)>&& seq)
- : base(std::forward<deque<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, U)>>(seq))
- {}
-#endif
-
- template<typename Sequence>
- deque(Sequence const& seq, typename disable_if<is_convertible<Sequence, T0> >::type* /*dummy*/ = 0)
- : base(base::from_iterator(fusion::begin(seq)))
- {}
-
- template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, typename U)>
- deque&
- operator=(deque<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, U)> const& rhs)
- {
- base::operator=(rhs);
- return *this;
- }
-
- template <typename T>
- deque&
- operator=(T const& rhs)
- {
- base::operator=(rhs);
- return *this;
- }
-
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
- template <typename T>
- deque&
- operator=(T&& rhs)
- {
- base::operator=(std::forward<T>(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
Deleted: branches/release/boost/fusion/container/deque/detail/pp_deque_fwd.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/detail/pp_deque_fwd.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,54 +0,0 @@
-/*=============================================================================
- Copyright (c) 2005-2012 Joel de Guzman
- Copyright (c) 2005-2007 Dan Marsden
-
- 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_PP_DEQUE_FORWARD_02092007_0749)
-#define FUSION_PP_DEQUE_FORWARD_02092007_0749
-
-#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
-#error "C++03 only! This file should not have been included"
-#endif
-
-#include <boost/fusion/container/deque/limits.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
-
-#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
-#include <boost/fusion/container/deque/detail/preprocessed/deque_fwd.hpp>
-#else
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/deque" FUSION_MAX_DEQUE_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_DEQUE_SIZE, typename T, void_)>
- struct deque;
-}}
-
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(output: null)
-#endif
-
-#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
-
-#endif
Deleted: branches/release/boost/fusion/container/deque/detail/pp_deque_keyed_values.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/detail/pp_deque_keyed_values.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,111 +0,0 @@
-/*=============================================================================
- Copyright (c) 2005-2012 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
-
- 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(BOOST_FUSION_DEQUE_DETAIL_DEQUE_KEYED_VALUES_26112006_1330)
-#define BOOST_FUSION_DEQUE_DETAIL_DEQUE_KEYED_VALUES_26112006_1330
-
-#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
-#error "C++03 only! This file should not have been included"
-#endif
-
-#include <boost/fusion/container/deque/limits.hpp>
-#include <boost/fusion/container/deque/detail/keyed_element.hpp>
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
-#include <boost/preprocessor/repetition/enum_shifted_params.hpp>
-#include <boost/preprocessor/repetition/enum.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/type_traits/add_reference.hpp>
-
-#include <boost/mpl/plus.hpp>
-#include <boost/mpl/int.hpp>
-#include <boost/mpl/print.hpp>
-
-#define FUSION_VOID(z, n, _) void_
-
-namespace boost { namespace fusion
-{
- struct void_;
-}}
-
-#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
-#include <boost/fusion/container/deque/detail/preprocessed/deque_keyed_values.hpp>
-#else
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/deque_keyed_values" FUSION_MAX_DEQUE_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<typename Key, typename Value, typename Rest>
- struct keyed_element;
-
- struct nil_keyed_element;
-
- template<typename N, BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(FUSION_MAX_DEQUE_SIZE, typename T, void_)>
- struct deque_keyed_values_impl;
-
- template<typename N>
- struct deque_keyed_values_impl<N, BOOST_PP_ENUM(FUSION_MAX_DEQUE_SIZE, FUSION_VOID, _)>
- {
- typedef nil_keyed_element type;
-
- static type call()
- {
- return type();
- }
-
- static type forward_()
- {
- return type();
- }
- };
-
- template<typename N, BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, typename T)>
- struct deque_keyed_values_impl
- {
- typedef mpl::int_<mpl::plus<N, mpl::int_<1> >::value> next_index;
-
- typedef typename deque_keyed_values_impl<
- next_index,
- BOOST_PP_ENUM_SHIFTED_PARAMS(FUSION_MAX_DEQUE_SIZE, T)>::type tail;
- typedef keyed_element<N, T0, tail> type;
-
-#include <boost/fusion/container/deque/detail/deque_keyed_values_call.hpp>
-
- };
-
- template<BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(FUSION_MAX_DEQUE_SIZE, typename T, void_)>
- struct deque_keyed_values
- : deque_keyed_values_impl<mpl::int_<0>, BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, 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
Deleted: branches/release/boost/fusion/container/deque/detail/variadic_deque_keyed_values.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/detail/variadic_deque_keyed_values.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,67 +0,0 @@
-/*=============================================================================
- Copyright (c) 2005-2012 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
-
- 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(BOOST_FUSION_DEQUE_DETAIL_CPP11_DEQUE_KEYED_VALUES_07042012_1901)
-#define BOOST_FUSION_DEQUE_DETAIL_CPP11_DEQUE_KEYED_VALUES_07042012_1901
-
-#include <boost/fusion/container/deque/detail/keyed_element.hpp>
-#include <boost/type_traits/add_reference.hpp>
-#include <boost/type_traits/add_const.hpp>
-#include <boost/mpl/int.hpp>
-
-namespace boost { namespace fusion { namespace detail
-{
- template<typename Key, typename Value, typename Rest>
- struct keyed_element;
-
- template <typename N, typename ...Elements>
- struct deque_keyed_values_impl;
-
- template <typename N, typename Head, typename ...Tail>
- struct deque_keyed_values_impl<N, Head, Tail...>
- {
- typedef mpl::int_<(N::value + 1)> next_index;
- typedef typename deque_keyed_values_impl<next_index, Tail...>::type tail;
- typedef keyed_element<N, Head, tail> type;
-
- static type construct(
- typename detail::call_param<Head>::type head
- , typename detail::call_param<Tail>::type... tail)
- {
- return type(
- head
- , deque_keyed_values_impl<next_index, Tail...>::construct(tail...)
- );
- }
-
- template <typename Head_, typename ...Tail_>
- static type forward_(Head_&& head, Tail_&&... tail)
- {
- return type(
- std::forward<Head_>(head)
- , deque_keyed_values_impl<next_index, Tail_...>::
- forward_(std::forward<Tail_>(tail)...)
- );
- }
- };
-
- struct nil_keyed_element;
-
- template <typename N>
- struct deque_keyed_values_impl<N>
- {
- typedef nil_keyed_element type;
- static type construct() { return type(); }
- static type forward_() { return type(); }
- };
-
- template <typename ...Elements>
- struct deque_keyed_values
- : deque_keyed_values_impl<mpl::int_<0>, Elements...> {};
-}}}
-
-#endif
Modified: branches/release/boost/fusion/container/deque/front_extended_deque.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/front_extended_deque.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/deque/front_extended_deque.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -30,7 +30,7 @@
: base(val, deque)
{}
-#if defined(BOOST_NO_RVALUE_REFERENCES)
+#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
template <typename Arg>
front_extended_deque(Deque const& deque, Arg& val)
: base(val, deque)
Deleted: branches/release/boost/fusion/container/deque/limits.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/limits.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,32 +0,0 @@
-/*=============================================================================
- Copyright (c) 2005-2012 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
-
- 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(BOOST_FUSION_DEQUE_LIMITS_26112006_1737)
-#define BOOST_FUSION_DEQUE_LIMITS_26112006_1737
-
-#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
-#error "C++03 only! This file should not have been included"
-#endif
-
-#include <boost/fusion/container/vector/limits.hpp>
-
-#if !defined(FUSION_MAX_DEQUE_SIZE)
-# define FUSION_MAX_DEQUE_SIZE FUSION_MAX_VECTOR_SIZE
-#else
-# if FUSION_MAX_DEQUE_SIZE < 3
-# undef FUSION_MAX_DEQUE_SIZE
-# if (FUSION_MAX_VECTOR_SIZE > 10)
-# define FUSION_MAX_DEQUE_SIZE 10
-# else
-# define FUSION_MAX_DEQUE_SIZE FUSION_MAX_VECTOR_SIZE
-# endif
-# endif
-#endif
-
-#define FUSION_MAX_DEQUE_SIZE_STR BOOST_PP_STRINGIZE(BOOST_FUSION_PP_ROUND_UP(FUSION_MAX_DEQUE_SIZE))
-
-#endif
Modified: branches/release/boost/fusion/container/generation/cons_tie.hpp
==============================================================================
--- branches/release/boost/fusion/container/generation/cons_tie.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/generation/cons_tie.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -11,11 +11,11 @@
namespace boost { namespace fusion
{
- struct nil;
+ struct nil_;
namespace result_of
{
- template <typename Car, typename Cdr = nil>
+ template <typename Car, typename Cdr = nil_>
struct cons_tie
{
typedef cons<Car&, Cdr> type;
Modified: branches/release/boost/fusion/container/generation/deque_tie.hpp
==============================================================================
--- branches/release/boost/fusion/container/generation/deque_tie.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/generation/deque_tie.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -1,41 +1,23 @@
/*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2006 Dan Marsden
+ Copyright (c) 2001-2013 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_DEQUE_TIE_07192005_1242)
-#define FUSION_DEQUE_TIE_07192005_1242
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
-#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#if !defined(FUSION_DEQUE_TIE_01272013_1401)
+#define FUSION_DEQUE_TIE_01272013_1401
+
#include <boost/fusion/container/deque/deque.hpp>
-#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
-#include <boost/fusion/container/generation/detail/preprocessed/deque_tie.hpp>
+#if !defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
+# include <boost/fusion/container/generation/detail/pp_deque_tie.hpp>
#else
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/deque_tie" FUSION_MAX_DEQUE_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!
-==============================================================================*/
+///////////////////////////////////////////////////////////////////////////////
+// C++11 variadic interface
+///////////////////////////////////////////////////////////////////////////////
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 1)
-#endif
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
namespace boost { namespace fusion
{
@@ -43,63 +25,21 @@
namespace result_of
{
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_DEQUE_SIZE, typename T, void_)
- , typename Extra = void_
- >
- struct deque_tie;
- }
-
-#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)&
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/deque_tie.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_REF
-
-}}
-
-#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()
-
- namespace result_of
+ template <typename ...T>
+ struct deque_tie
{
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
-#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
- #define TEXT(z, n, text) , text
- struct deque_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_DEQUE_SIZE, TEXT, void_) >
- #undef TEXT
-#else
- struct deque_tie<BOOST_PP_ENUM_PARAMS(N, T)>
-#endif
- {
- typedef deque<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)> type;
+ typedef deque<T&...> type;
};
}
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
- inline deque<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>
- deque_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _))
+ template <typename ...T>
+ inline deque<T&...>
+ deque_tie(T&... arg)
{
- return deque<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>(
- BOOST_PP_ENUM_PARAMS(N, _));
+ return deque<T&...>(arg...);
}
+ }}
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
+#endif
+#endif
Copied: branches/release/boost/fusion/container/generation/detail/pp_deque_tie.hpp (from r82696, trunk/boost/fusion/container/generation/detail/pp_deque_tie.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/generation/detail/pp_deque_tie.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82696, trunk/boost/fusion/container/generation/detail/pp_deque_tie.hpp)
@@ -0,0 +1,105 @@
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2006 Dan Marsden
+
+ 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_PP_DEQUE_TIE_07192005_1242)
+#define FUSION_PP_DEQUE_TIE_07192005_1242
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/fusion/container/deque/deque.hpp>
+
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/container/generation/detail/preprocessed/deque_tie.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/deque_tie" FUSION_MAX_DEQUE_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_;
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_DEQUE_SIZE, typename T, void_)
+ , typename Extra = void_
+ >
+ struct deque_tie;
+ }
+
+#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)&
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/detail/pp_deque_tie.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_REF
+
+}}
+
+#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()
+
+ namespace result_of
+ {
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ #define TEXT(z, n, text) , text
+ struct deque_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_DEQUE_SIZE, TEXT, void_) >
+ #undef TEXT
+#else
+ struct deque_tie<BOOST_PP_ENUM_PARAMS(N, T)>
+#endif
+ {
+ typedef deque<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)> type;
+ };
+ }
+
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+ inline deque<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>
+ deque_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _))
+ {
+ return deque<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>(
+ BOOST_PP_ENUM_PARAMS(N, _));
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+
Copied: branches/release/boost/fusion/container/generation/detail/pp_make_deque.hpp (from r82696, trunk/boost/fusion/container/generation/detail/pp_make_deque.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/generation/detail/pp_make_deque.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82696, trunk/boost/fusion/container/generation/detail/pp_make_deque.hpp)
@@ -0,0 +1,121 @@
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2006 Dan Marsden
+
+ 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_PP_MAKE_DEQUE_07162005_0243)
+#define FUSION_MAKE_PP_DEQUE_07162005_0243
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/fusion/container/deque/deque.hpp>
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/container/generation/detail/preprocessed/make_deque.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/make_deque" FUSION_MAX_DEQUE_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_;
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_DEQUE_SIZE, typename T, void_)
+ , typename Extra = void_
+ >
+ struct make_deque;
+
+ template <>
+ struct make_deque<>
+ {
+ typedef deque<> type;
+ };
+ }
+
+ inline deque<>
+ make_deque()
+ {
+ return deque<>();
+ }
+
+#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \
+ typename detail::as_fusion_element<BOOST_PP_CAT(T, n)>::type
+
+#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \
+ typename detail::as_fusion_element<BOOST_PP_CAT(T, n)>::type
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/detail/pp_make_deque.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_AS_FUSION_ELEMENT
+
+}}
+
+#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()
+
+ namespace result_of
+ {
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ #define TEXT(z, n, text) , text
+ struct make_deque< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_DEQUE_SIZE, TEXT, void_) >
+ #undef TEXT
+#else
+ struct make_deque<BOOST_PP_ENUM_PARAMS(N, T)>
+#endif
+ {
+ typedef deque<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)> type;
+ };
+ }
+
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+ inline deque<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>
+ make_deque(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _))
+ {
+ return deque<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>(
+ BOOST_PP_ENUM_PARAMS(N, _));
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+
Copied: branches/release/boost/fusion/container/generation/detail/pp_make_map.hpp (from r82784, trunk/boost/fusion/container/generation/detail/pp_make_map.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/generation/detail/pp_make_map.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82784, trunk/boost/fusion/container/generation/detail/pp_make_map.hpp)
@@ -0,0 +1,132 @@
+/*=============================================================================
+ 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_PP_MAKE_MAP_07222005_1247)
+#define FUSION_PP_MAKE_MAP_07222005_1247
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/fusion/container/map/map.hpp>
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+#include <boost/fusion/support/pair.hpp>
+
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/container/generation/detail/preprocessed/make_map.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/make_map" FUSION_MAX_MAP_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_;
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_VECTOR_SIZE, typename K, void_)
+ , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_VECTOR_SIZE, typename D, void_)
+ , typename Extra = void_
+ >
+ struct make_map;
+
+ template <>
+ struct make_map<>
+ {
+ typedef map<> type;
+ };
+ }
+
+ inline map<>
+ make_map()
+ {
+ return map<>();
+ }
+
+#define BOOST_FUSION_PAIR(z, n, data) \
+ fusion::pair< \
+ BOOST_PP_CAT(K, n) \
+ , typename detail::as_fusion_element<BOOST_PP_CAT(D, n)>::type>
+
+#define BOOST_FUSION_MAKE_PAIR(z, n, data) \
+ fusion::make_pair<BOOST_PP_CAT(K, n)>(BOOST_PP_CAT(_, n)) \
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/detail/pp_make_map.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_PAIR
+#undef BOOST_FUSION_MAKE_PAIR
+
+}}
+
+#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()
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS(N, typename K)
+ , BOOST_PP_ENUM_PARAMS(N, typename D)
+ >
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ #define TEXT(z, n, text) , text
+ struct make_map<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D) BOOST_PP_REPEAT_FROM_TO(N, FUSION_MAX_VECTOR_SIZE, TEXT, void_) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_)>
+ #undef TEXT
+#else
+ struct make_map<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D)>
+#endif
+ {
+ typedef map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)> type;
+ };
+ }
+
+ template <
+ BOOST_PP_ENUM_PARAMS(N, typename K)
+ , BOOST_PP_ENUM_PARAMS(N, typename D)
+ >
+ inline map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)>
+ make_map(BOOST_PP_ENUM_BINARY_PARAMS(N, D, const& _))
+ {
+ return map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)>(
+ BOOST_PP_ENUM(N, BOOST_FUSION_MAKE_PAIR, _));
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+
Copied: branches/release/boost/fusion/container/generation/detail/pp_map_tie.hpp (from r82784, trunk/boost/fusion/container/generation/detail/pp_map_tie.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/generation/detail/pp_map_tie.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82784, trunk/boost/fusion/container/generation/detail/pp_map_tie.hpp)
@@ -0,0 +1,136 @@
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2006 Dan Marsden
+
+ 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_PP_MAP_TIE_20060814_1116)
+#define FUSION_PP_MAP_TIE_20060814_1116
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/fusion/container/map/map.hpp>
+#include <boost/fusion/container/map/detail/cpp03/limits.hpp>
+#include <boost/fusion/support/pair.hpp>
+#include <boost/fusion/container/generation/pair_tie.hpp>
+#include <boost/type_traits/add_reference.hpp>
+
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/container/generation/detail/preprocessed/map_tie.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/map_tie" FUSION_MAX_MAP_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_;
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_MAP_SIZE, typename K, void_)
+ , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_MAP_SIZE, typename D, void_)
+ , typename Extra = void_
+ >
+ struct map_tie;
+
+ template <>
+ struct map_tie<>
+ {
+ typedef map<> type;
+ };
+ }
+
+ inline map<>
+ map_tie()
+ {
+ return map<>();
+ }
+
+#define BOOST_FUSION_TIED_PAIR(z, n, data) \
+ fusion::pair< \
+ BOOST_PP_CAT(K, n) \
+ , typename add_reference<BOOST_PP_CAT(D, n)>::type>
+
+#define BOOST_FUSION_PAIR_TIE(z, n, data) \
+ fusion::pair_tie<BOOST_PP_CAT(K, n)>(BOOST_PP_CAT(_, n)) \
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/detail/pp_map_tie.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_PAIR
+#undef BOOST_FUSION_MAKE_PAIR
+
+}}
+
+#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()
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS(N, typename K)
+ , BOOST_PP_ENUM_PARAMS(N, typename D)
+ >
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ #define TEXT(z, n, text) , text
+
+ struct map_tie<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D) BOOST_PP_REPEAT_FROM_TO(N, FUSION_MAX_MAP_SIZE, TEXT, void_) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_MAP_SIZE, TEXT, void_)>
+ #undef TEXT
+#else
+ struct map_tie<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D)>
+#endif
+ {
+ typedef map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)> type;
+ };
+ }
+
+ template <
+ BOOST_PP_ENUM_PARAMS(N, typename K)
+ , BOOST_PP_ENUM_PARAMS(N, typename D)
+ >
+ inline map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)>
+ map_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, D, & _))
+ {
+ return map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)>(
+ BOOST_PP_ENUM(N, BOOST_FUSION_PAIR_TIE, _));
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+
Modified: branches/release/boost/fusion/container/generation/make_cons.hpp
==============================================================================
--- branches/release/boost/fusion/container/generation/make_cons.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/generation/make_cons.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -13,11 +13,11 @@
namespace boost { namespace fusion
{
- struct nil;
+ struct nil_;
namespace result_of
{
- template <typename Car, typename Cdr = nil>
+ template <typename Car, typename Cdr = nil_>
struct make_cons
{
typedef cons<typename detail::as_fusion_element<Car>::type, Cdr> type;
Modified: branches/release/boost/fusion/container/generation/make_deque.hpp
==============================================================================
--- branches/release/boost/fusion/container/generation/make_deque.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/generation/make_deque.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -1,124 +1,43 @@
/*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2006 Dan Marsden
+ Copyright (c) 2001-2013 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)
==============================================================================*/
-/*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
+#if !defined(FUSION_MAKE_DEQUE_01272013_1401)
+#define FUSION_MAKE_DEQUE_01272013_1401
- 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_MAKE_DEQUE_07162005_0243)
-#define FUSION_MAKE_DEQUE_07162005_0243
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
-#include <boost/preprocessor/repetition/repeat_from_to.hpp>
#include <boost/fusion/container/deque/deque.hpp>
-#include <boost/fusion/support/detail/as_fusion_element.hpp>
-#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
-#include <boost/fusion/container/generation/detail/preprocessed/make_deque.hpp>
+#if !defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
+# include <boost/fusion/container/generation/detail/pp_make_deque.hpp>
#else
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/make_deque" FUSION_MAX_DEQUE_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!
-==============================================================================*/
+///////////////////////////////////////////////////////////////////////////////
+// C++11 variadic interface
+///////////////////////////////////////////////////////////////////////////////
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 1)
-#endif
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
namespace boost { namespace fusion
{
- struct void_;
-
namespace result_of
{
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_DEQUE_SIZE, typename T, void_)
- , typename Extra = void_
- >
- struct make_deque;
-
- template <>
- struct make_deque<>
+ template <typename ...T>
+ struct make_deque
{
- typedef deque<> type;
+ typedef deque<T...> type;
};
}
- inline deque<>
- make_deque()
+ template <typename ...T>
+ inline deque<typename detail::as_fusion_element<T>::type...>
+ make_deque(T const&... arg)
{
- return deque<>();
+ return deque<typename detail::as_fusion_element<T>::type...>(arg...);
}
-
-#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \
- typename detail::as_fusion_element<BOOST_PP_CAT(T, n)>::type
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/make_deque.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_AS_FUSION_ELEMENT
-
}}
-#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()
-
- namespace result_of
- {
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
-#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
- #define TEXT(z, n, text) , text
- struct make_deque< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_DEQUE_SIZE, TEXT, void_) >
- #undef TEXT
-#else
- struct make_deque<BOOST_PP_ENUM_PARAMS(N, T)>
-#endif
- {
- typedef deque<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)> type;
- };
- }
-
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
- inline deque<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>
- make_deque(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _))
- {
- return deque<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>(
- BOOST_PP_ENUM_PARAMS(N, _));
- }
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
Modified: branches/release/boost/fusion/container/generation/make_map.hpp
==============================================================================
--- branches/release/boost/fusion/container/generation/make_map.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/generation/make_map.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -1,132 +1,62 @@
/*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2001-2013 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_MAKE_MAP_07222005_1247)
#define FUSION_MAKE_MAP_07222005_1247
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
-#include <boost/preprocessor/repetition/repeat_from_to.hpp>
#include <boost/fusion/container/map/map.hpp>
-#include <boost/fusion/support/detail/as_fusion_element.hpp>
-#include <boost/fusion/support/pair.hpp>
-#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
-#include <boost/fusion/container/generation/detail/preprocessed/make_map.hpp>
+#if !defined(BOOST_FUSION_HAS_VARIADIC_MAP)
+# include <boost/fusion/container/generation/detail/pp_make_map.hpp>
#else
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/make_map" FUSION_MAX_MAP_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 variadic interface
+///////////////////////////////////////////////////////////////////////////////
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+#include <boost/fusion/support/pair.hpp>
namespace boost { namespace fusion
{
- struct void_;
-
namespace result_of
{
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_VECTOR_SIZE, typename K, void_)
- , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_VECTOR_SIZE, typename D, void_)
- , typename Extra = void_
- >
- struct make_map;
-
- template <>
- struct make_map<>
+ template <typename ...Key>
+ struct make_map
{
- typedef map<> type;
+ template <typename ...T>
+ struct apply
+ {
+ typedef map<
+ fusion::pair<
+ Key
+ , typename detail::as_fusion_element<T>::type
+ >...>
+ type;
+ };
};
}
- inline map<>
- make_map()
+ template <typename ...Key, typename ...T>
+ inline map<
+ fusion::pair<
+ Key
+ , typename detail::as_fusion_element<T>::type
+ >...>
+ make_map(T const&... arg)
{
- return map<>();
- }
-
-#define BOOST_FUSION_PAIR(z, n, data) \
- fusion::pair< \
- BOOST_PP_CAT(K, n) \
- , typename detail::as_fusion_element<BOOST_PP_CAT(D, n)>::type>
-
-#define BOOST_FUSION_MAKE_PAIR(z, n, data) \
- fusion::make_pair<BOOST_PP_CAT(K, n)>(BOOST_PP_CAT(_, n)) \
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/make_map.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_PAIR
-#undef BOOST_FUSION_MAKE_PAIR
+ typedef map<
+ fusion::pair<
+ Key
+ , typename detail::as_fusion_element<T>::type
+ >...>
+ result_type;
+ return result_type(arg...);
+ }
}}
-#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()
-
- namespace result_of
- {
- template <
- BOOST_PP_ENUM_PARAMS(N, typename K)
- , BOOST_PP_ENUM_PARAMS(N, typename D)
- >
-#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
- #define TEXT(z, n, text) , text
- struct make_map<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D) BOOST_PP_REPEAT_FROM_TO(N, FUSION_MAX_VECTOR_SIZE, TEXT, void_) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_)>
- #undef TEXT
-#else
- struct make_map<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D)>
#endif
- {
- typedef map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)> type;
- };
- }
-
- template <
- BOOST_PP_ENUM_PARAMS(N, typename K)
- , BOOST_PP_ENUM_PARAMS(N, typename D)
- >
- inline map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)>
- make_map(BOOST_PP_ENUM_BINARY_PARAMS(N, D, const& _))
- {
- return map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)>(
- BOOST_PP_ENUM(N, BOOST_FUSION_MAKE_PAIR, _));
- }
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
-
+#endif
\ No newline at end of file
Modified: branches/release/boost/fusion/container/generation/map_tie.hpp
==============================================================================
--- branches/release/boost/fusion/container/generation/map_tie.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/generation/map_tie.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -1,136 +1,46 @@
/*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2006 Dan Marsden
+ Copyright (c) 2001-2013 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_MAP_TIE_20060814_1116)
-#define FUSION_MAP_TIE_20060814_1116
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
-#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#if !defined(FUSION_MAP_TIE_07222005_1247)
+#define FUSION_MAP_TIE_07222005_1247
+
#include <boost/fusion/container/map/map.hpp>
-#include <boost/fusion/container/map/limits.hpp>
-#include <boost/fusion/support/pair.hpp>
-#include <boost/fusion/container/generation/pair_tie.hpp>
-#include <boost/type_traits/add_reference.hpp>
-#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
-#include <boost/fusion/container/generation/detail/preprocessed/map_tie.hpp>
+#if !defined(BOOST_FUSION_HAS_VARIADIC_MAP)
+# include <boost/fusion/container/generation/detail/pp_map_tie.hpp>
#else
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/map_tie" FUSION_MAX_MAP_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 variadic interface
+///////////////////////////////////////////////////////////////////////////////
+#include <boost/fusion/support/pair.hpp>
namespace boost { namespace fusion
{
- struct void_;
-
namespace result_of
{
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_MAP_SIZE, typename K, void_)
- , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_MAP_SIZE, typename D, void_)
- , typename Extra = void_
- >
- struct map_tie;
-
- template <>
- struct map_tie<>
+ template <typename ...Key>
+ struct map_tie
{
- typedef map<> type;
+ template <typename ...T>
+ struct apply
+ {
+ typedef map<fusion::pair<Key, T&>...> type;
+ };
};
}
- inline map<>
- map_tie()
+ template <typename ...Key, typename ...T>
+ inline map<fusion::pair<Key, T&>...>
+ map_tie(T&... arg)
{
- return map<>();
+ typedef map<fusion::pair<Key, T&>...> result_type;
+ return result_type(arg...);
}
-
-#define BOOST_FUSION_TIED_PAIR(z, n, data) \
- fusion::pair< \
- BOOST_PP_CAT(K, n) \
- , typename add_reference<BOOST_PP_CAT(D, n)>::type>
-
-#define BOOST_FUSION_PAIR_TIE(z, n, data) \
- fusion::pair_tie<BOOST_PP_CAT(K, n)>(BOOST_PP_CAT(_, n)) \
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/map_tie.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_PAIR
-#undef BOOST_FUSION_MAKE_PAIR
-
}}
-#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()
-
- namespace result_of
- {
- template <
- BOOST_PP_ENUM_PARAMS(N, typename K)
- , BOOST_PP_ENUM_PARAMS(N, typename D)
- >
-#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
- #define TEXT(z, n, text) , text
-
- struct map_tie<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D) BOOST_PP_REPEAT_FROM_TO(N, FUSION_MAX_MAP_SIZE, TEXT, void_) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_MAP_SIZE, TEXT, void_)>
- #undef TEXT
-#else
- struct map_tie<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D)>
-#endif
- {
- typedef map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)> type;
- };
- }
-
- template <
- BOOST_PP_ENUM_PARAMS(N, typename K)
- , BOOST_PP_ENUM_PARAMS(N, typename D)
- >
- inline map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)>
- map_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, D, & _))
- {
- return map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)>(
- BOOST_PP_ENUM(N, BOOST_FUSION_PAIR_TIE, _));
- }
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
-
+#endif
\ No newline at end of file
Modified: branches/release/boost/fusion/container/list/cons.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/cons.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/cons.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -34,7 +34,7 @@
struct forward_traversal_tag;
struct fusion_sequence_tag;
- struct nil : sequence_base<nil>
+ struct nil_ : sequence_base<nil_>
{
typedef mpl::int_<0> size;
typedef cons_tag fusion_tag;
@@ -44,10 +44,10 @@
typedef void_ car_type;
typedef void_ cdr_type;
- nil() {}
+ nil_() {}
template <typename Iterator>
- nil(Iterator const& /*iter*/, mpl::true_ /*this_is_an_iterator*/)
+ nil_(Iterator const& /*iter*/, mpl::true_ /*this_is_an_iterator*/)
{}
template <typename Iterator>
@@ -56,7 +56,7 @@
}
};
- template <typename Car, typename Cdr /*= nil*/>
+ template <typename Car, typename Cdr /*= nil_*/>
struct cons : sequence_base<cons<Car, Cdr> >
{
typedef mpl::int_<Cdr::size::value+1> size;
Modified: branches/release/boost/fusion/container/list/cons_fwd.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/cons_fwd.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/cons_fwd.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -10,9 +10,12 @@
namespace boost { namespace fusion
{
- struct nil;
+ struct nil_;
+ #ifndef nil
+ typedef nil_ nil;
+ #endif
- template <typename Car, typename Cdr = nil>
+ template <typename Car, typename Cdr = nil_>
struct cons;
}}
Modified: branches/release/boost/fusion/container/list/cons_iterator.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/cons_iterator.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/cons_iterator.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -18,14 +18,14 @@
namespace boost { namespace fusion
{
- struct nil;
+ struct nil_;
struct cons_iterator_tag;
struct forward_traversal_tag;
template <typename Cons>
struct cons_iterator_identity;
- template <typename Cons = nil>
+ template <typename Cons = nil_>
struct cons_iterator : iterator_base<cons_iterator<Cons> >
{
typedef cons_iterator_tag fusion_tag;
@@ -49,40 +49,40 @@
{
typedef forward_traversal_tag category;
typedef cons_iterator_tag fusion_tag;
- typedef nil cons_type;
+ typedef nil_ cons_type;
typedef cons_iterator_identity<
- add_const<nil>::type>
+ add_const<nil_>::type>
identity;
nil_iterator() {}
- explicit nil_iterator(nil const&) {}
+ explicit nil_iterator(nil_ const&) {}
};
template <>
- struct cons_iterator<nil> : nil_iterator
+ struct cons_iterator<nil_> : nil_iterator
{
cons_iterator() {}
- explicit cons_iterator(nil const&) {}
+ explicit cons_iterator(nil_ const&) {}
};
template <>
- struct cons_iterator<nil const> : nil_iterator
+ struct cons_iterator<nil_ const> : nil_iterator
{
cons_iterator() {}
- explicit cons_iterator(nil const&) {}
+ explicit cons_iterator(nil_ const&) {}
};
template <>
struct cons_iterator<list<> > : nil_iterator
{
cons_iterator() {}
- explicit cons_iterator(nil const&) {}
+ explicit cons_iterator(nil_ const&) {}
};
template <>
struct cons_iterator<list<> const> : nil_iterator
{
cons_iterator() {}
- explicit cons_iterator(nil const&) {}
+ explicit cons_iterator(nil_ const&) {}
};
}}
Modified: branches/release/boost/fusion/container/list/detail/begin_impl.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/begin_impl.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/begin_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -13,7 +13,7 @@
namespace boost { namespace fusion
{
- struct nil;
+ struct nil_;
struct cons_tag;
Modified: branches/release/boost/fusion/container/list/detail/build_cons.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/build_cons.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/build_cons.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -24,12 +24,12 @@
template <typename First, typename Last>
struct build_cons<First, Last, true>
{
- typedef nil type;
+ typedef nil_ type;
- static nil
+ static nil_
call(First const&, Last const&)
{
- return nil();
+ return nil_();
}
};
Modified: branches/release/boost/fusion/container/list/detail/empty_impl.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/empty_impl.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/empty_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -13,7 +13,7 @@
{
struct cons_tag;
- struct nil;
+ struct nil_;
template <typename Car, typename Cdr>
struct cons;
@@ -28,7 +28,7 @@
{
template <typename Sequence>
struct apply
- : boost::is_convertible<Sequence, nil>
+ : boost::is_convertible<Sequence, nil_>
{};
};
}
Modified: branches/release/boost/fusion/container/list/detail/end_impl.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/end_impl.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/end_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -13,7 +13,7 @@
namespace boost { namespace fusion
{
- struct nil;
+ struct nil_;
struct cons_tag;
@@ -35,7 +35,7 @@
struct apply
{
typedef cons_iterator<
- typename mpl::if_<is_const<Sequence>, nil const, nil>::type>
+ typename mpl::if_<is_const<Sequence>, nil_ const, nil_>::type>
type;
static type
Modified: branches/release/boost/fusion/container/list/detail/list_to_cons.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/list_to_cons.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/list_to_cons.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -18,7 +18,7 @@
namespace boost { namespace fusion
{
- struct nil;
+ struct nil_;
struct void_;
}}
@@ -61,7 +61,7 @@
template <>
struct list_to_cons<BOOST_PP_ENUM(FUSION_MAX_LIST_SIZE, FUSION_VOID, _)>
{
- typedef nil type;
+ typedef nil_ type;
};
}}}
Modified: branches/release/boost/fusion/container/list/detail/preprocessed/list10.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/preprocessed/list10.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/preprocessed/list10.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -8,7 +8,7 @@
==============================================================================*/
namespace boost { namespace fusion
{
- struct nil;
+ struct nil_;
struct void_;
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
struct list
Modified: branches/release/boost/fusion/container/list/detail/preprocessed/list20.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/preprocessed/list20.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/preprocessed/list20.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -8,7 +8,7 @@
==============================================================================*/
namespace boost { namespace fusion
{
- struct nil;
+ struct nil_;
struct void_;
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19>
struct list
Modified: branches/release/boost/fusion/container/list/detail/preprocessed/list30.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/preprocessed/list30.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/preprocessed/list30.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -8,7 +8,7 @@
==============================================================================*/
namespace boost { namespace fusion
{
- struct nil;
+ struct nil_;
struct void_;
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29>
struct list
Modified: branches/release/boost/fusion/container/list/detail/preprocessed/list40.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/preprocessed/list40.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/preprocessed/list40.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -8,7 +8,7 @@
==============================================================================*/
namespace boost { namespace fusion
{
- struct nil;
+ struct nil_;
struct void_;
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39>
struct list
Modified: branches/release/boost/fusion/container/list/detail/preprocessed/list50.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/preprocessed/list50.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/preprocessed/list50.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -8,7 +8,7 @@
==============================================================================*/
namespace boost { namespace fusion
{
- struct nil;
+ struct nil_;
struct void_;
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47 , typename T48 , typename T49>
struct list
Modified: branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons10.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons10.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons10.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -81,6 +81,6 @@
template <>
struct list_to_cons<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
{
- typedef nil type;
+ typedef nil_ type;
};
}}}
Modified: branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons20.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons20.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons20.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -141,6 +141,6 @@
template <>
struct list_to_cons<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
{
- typedef nil type;
+ typedef nil_ type;
};
}}}
Modified: branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons30.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons30.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons30.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -201,6 +201,6 @@
template <>
struct list_to_cons<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
{
- typedef nil type;
+ typedef nil_ type;
};
}}}
Modified: branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons40.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons40.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons40.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -261,6 +261,6 @@
template <>
struct list_to_cons<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
{
- typedef nil type;
+ typedef nil_ type;
};
}}}
Modified: branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons50.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons50.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons50.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -321,6 +321,6 @@
template <>
struct list_to_cons<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
{
- typedef nil type;
+ typedef nil_ type;
};
}}}
Modified: branches/release/boost/fusion/container/list/detail/reverse_cons.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/reverse_cons.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/reverse_cons.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -12,7 +12,7 @@
namespace boost { namespace fusion { namespace detail
{
////////////////////////////////////////////////////////////////////////////
- template<typename Cons, typename State = nil>
+ template<typename Cons, typename State = nil_>
struct reverse_cons;
template<typename Car, typename Cdr, typename State>
@@ -29,11 +29,11 @@
};
template<typename State>
- struct reverse_cons<nil, State>
+ struct reverse_cons<nil_, State>
{
typedef State type;
- static State const &call(nil const &, State const &state = State())
+ static State const &call(nil_ const &, State const &state = State())
{
return state;
}
Modified: branches/release/boost/fusion/container/list/list.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/list.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/list.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -32,7 +32,7 @@
namespace boost { namespace fusion
{
- struct nil;
+ struct nil_;
struct void_;
template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, typename T)>
Modified: branches/release/boost/fusion/container/map.hpp
==============================================================================
--- branches/release/boost/fusion/container/map.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/map.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -7,7 +7,6 @@
#if !defined(FUSION_SEQUENCE_CLASS_MAP_10022005_0606)
#define FUSION_SEQUENCE_CLASS_MAP_10022005_0606
-#include <boost/fusion/container/map/limits.hpp>
#include <boost/fusion/container/map/map.hpp>
#include <boost/fusion/container/map/map_fwd.hpp>
#include <boost/fusion/container/map/convert.hpp>
Modified: branches/release/boost/fusion/container/map/convert.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/convert.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/map/convert.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -4,26 +4,34 @@
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_CONVERT_09232005_1340)
-#define FUSION_CONVERT_09232005_1340
+#if !defined(FUSION_CONVERT_MAIN_09232005_1340)
+#define FUSION_CONVERT_MAIN_09232005_1340
-#include <boost/fusion/container/map/detail/as_map.hpp>
-#include <boost/fusion/container/map/detail/convert_impl.hpp>
#include <boost/fusion/container/map/map.hpp>
-#include <boost/fusion/sequence/intrinsic/begin.hpp>
-#include <boost/fusion/sequence/intrinsic/size.hpp>
+
+///////////////////////////////////////////////////////////////////////////////
+// Without variadics, we will use the PP version
+///////////////////////////////////////////////////////////////////////////////
+#if !defined(BOOST_FUSION_HAS_VARIADIC_MAP)
+# include <boost/fusion/container/map/detail/cpp03/convert.hpp>
+
+#else
+///////////////////////////////////////////////////////////////////////////////
+// C++11 variadic implementation
+///////////////////////////////////////////////////////////////////////////////
+#include <boost/fusion/container/map/detail/build_map.hpp>
namespace boost { namespace fusion
{
namespace result_of
{
template <typename Sequence>
- struct as_map
+ struct as_map :
+ detail::build_map<
+ typename result_of::begin<Sequence>::type
+ , typename result_of::end<Sequence>::type
+ >
{
- typedef typename detail::as_map<result_of::size<Sequence>::value> gen;
- typedef typename gen::
- template apply<typename result_of::begin<Sequence>::type>::type
- type;
};
}
@@ -31,16 +39,16 @@
inline typename result_of::as_map<Sequence>::type
as_map(Sequence& seq)
{
- typedef typename result_of::as_map<Sequence>::gen gen;
- return gen::call(fusion::begin(seq));
+ typedef result_of::as_map<Sequence> gen;
+ return gen::call(fusion::begin(seq), fusion::end(seq));
}
template <typename Sequence>
inline typename result_of::as_map<Sequence const>::type
as_map(Sequence const& seq)
{
- typedef typename result_of::as_map<Sequence const>::gen gen;
- return gen::call(fusion::begin(seq));
+ typedef result_of::as_map<Sequence const> gen;
+ return gen::call(fusion::begin(seq), fusion::end(seq));
}
namespace extension
@@ -69,3 +77,5 @@
}}
#endif
+#endif
+
Deleted: branches/release/boost/fusion/container/map/detail/as_map.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/detail/as_map.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,130 +0,0 @@
-/*=============================================================================
- 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_MAP_0932005_1339)
-#define FUSION_AS_MAP_0932005_1339
-
-#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/map/map.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
-{
- template <int size>
- struct as_map;
-
- template <>
- struct as_map<0>
- {
- template <typename Iterator>
- struct apply
- {
- typedef map<> type;
- };
-
- template <typename Iterator>
- static typename apply<Iterator>::type
- call(Iterator)
- {
- return map<>();
- }
- };
-}}}
-
-#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
-#include <boost/fusion/container/map/detail/preprocessed/as_map.hpp>
-#else
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/as_map" FUSION_MAX_MAP_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
-{
-#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/map/detail/as_map.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_NEXT_ITERATOR
-#undef BOOST_FUSION_NEXT_CALL_ITERATOR
-#undef BOOST_FUSION_VALUE_OF_ITERATOR
-
-}}}
-
-#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_map<N>
- {
- template <typename I0>
- struct apply
- {
- BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _)
- BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _)
- typedef map<BOOST_PP_ENUM_PARAMS(N, T)> type;
- };
-
- template <typename Iterator>
- 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)
-
Copied: branches/release/boost/fusion/container/map/detail/at_impl.hpp (from r82784, trunk/boost/fusion/container/map/detail/at_impl.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/map/detail/at_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82784, trunk/boost/fusion/container/map/detail/at_impl.hpp)
@@ -0,0 +1,57 @@
+/*=============================================================================
+ Copyright (c) 2001-2013 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(BOOST_FUSION_MAP_DETAIL_AT_IMPL_02042013_0821)
+#define BOOST_FUSION_MAP_DETAIL_AT_IMPL_02042013_0821
+
+#include <boost/fusion/support/detail/access.hpp>
+
+namespace boost { namespace fusion
+{
+ struct map_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct at_impl;
+
+ template <>
+ struct at_impl<map_tag>
+ {
+ template <typename Sequence, typename N>
+ struct apply
+ {
+ typedef mpl::int_<N::value> index;
+ typedef
+ decltype(std::declval<Sequence>().get(index()))
+ type;
+
+ static type
+ call(Sequence& m)
+ {
+ return m.get(index());
+ }
+ };
+
+ template <typename Sequence, typename N>
+ struct apply<Sequence const, N>
+ {
+ typedef mpl::int_<N::value> index;
+ typedef
+ decltype(std::declval<Sequence const>().get(index()))
+ type;
+
+ static type
+ call(Sequence const& m)
+ {
+ return m.get(index());
+ }
+ };
+ };
+ }
+}}
+
+#endif
Copied: branches/release/boost/fusion/container/map/detail/at_key_impl.hpp (from r82784, trunk/boost/fusion/container/map/detail/at_key_impl.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/map/detail/at_key_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82784, trunk/boost/fusion/container/map/detail/at_key_impl.hpp)
@@ -0,0 +1,58 @@
+/*=============================================================================
+ Copyright (c) 2001-2013 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(BOOST_FUSION_MAP_DETAIL_AT_KEY_IMPL_02042013_0821)
+#define BOOST_FUSION_MAP_DETAIL_AT_KEY_IMPL_02042013_0821
+
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/mpl/at.hpp>
+#include <boost/mpl/identity.hpp>
+
+namespace boost { namespace fusion
+{
+ struct map_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct at_key_impl;
+
+ template <>
+ struct at_key_impl<map_tag>
+ {
+ template <typename Sequence, typename Key>
+ struct apply
+ {
+ typedef
+ decltype(std::declval<Sequence>().get(mpl::identity<Key>()))
+ type;
+
+ static type
+ call(Sequence& m)
+ {
+ return m.get(mpl::identity<Key>());
+ }
+ };
+
+ template <typename Sequence, typename Key>
+ struct apply<Sequence const, Key>
+ {
+ typedef
+ decltype(std::declval<Sequence const>().get(mpl::identity<Key>()))
+ type;
+
+ static type
+ call(Sequence const& m)
+ {
+ return m.get(mpl::identity<Key>());
+ }
+ };
+ };
+ }
+}}
+
+#endif
Copied: branches/release/boost/fusion/container/map/detail/begin_impl.hpp (from r82784, trunk/boost/fusion/container/map/detail/begin_impl.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/map/detail/begin_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82784, trunk/boost/fusion/container/map/detail/begin_impl.hpp)
@@ -0,0 +1,38 @@
+/*=============================================================================
+ Copyright (c) 2005-2013 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(BOOST_FUSION_MAP_BEGIN_IMPL_02042013_0857)
+#define BOOST_FUSION_MAP_BEGIN_IMPL_02042013_0857
+
+#include <boost/fusion/container/map/map_iterator.hpp>
+
+namespace boost { namespace fusion
+{
+ struct map_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct begin_impl;
+
+ template<>
+ struct begin_impl<map_tag>
+ {
+ template<typename Sequence>
+ struct apply
+ {
+ typedef map_iterator<Sequence, 0> type;
+
+ static type call(Sequence& seq)
+ {
+ return type(seq);
+ }
+ };
+ };
+ }
+}}
+
+#endif
Copied: branches/release/boost/fusion/container/map/detail/build_map.hpp (from r82784, trunk/boost/fusion/container/map/detail/build_map.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/map/detail/build_map.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82784, trunk/boost/fusion/container/map/detail/build_map.hpp)
@@ -0,0 +1,75 @@
+/*=============================================================================
+ Copyright (c) 2005-2013 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(BOOST_FUSION_BUILD_MAP_02042013_1448)
+#define BOOST_FUSION_BUILD_MAP_02042013_1448
+
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/value_of.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/container/map/map.hpp>
+#include <boost/fusion/algorithm/transformation/push_front.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <typename First, typename Last
+ , bool is_empty = result_of::equal_to<First, Last>::value>
+ struct build_map;
+
+ template <typename First, typename Last>
+ struct build_map<First, Last, true>
+ {
+ typedef map<> type;
+ static type
+ call(First const&, Last const&)
+ {
+ return type();
+ }
+ };
+
+ template <typename T, typename Rest>
+ struct push_front_map;
+
+ template <typename T, typename ...Rest>
+ struct push_front_map<T, map<Rest...>>
+ {
+ typedef map<T, Rest...> type;
+
+ static type
+ call(T const& first, map<Rest...> const& rest)
+ {
+ return type(push_front(rest, first));
+ }
+ };
+
+ template <typename First, typename Last>
+ struct build_map<First, Last, false>
+ {
+ typedef
+ build_map<typename result_of::next<First>::type, Last>
+ next_build_map;
+
+ typedef push_front_map<
+ typename result_of::value_of<First>::type
+ , typename next_build_map::type>
+ push_front;
+
+ typedef typename push_front::type type;
+
+ static type
+ call(First const& f, Last const& l)
+ {
+ typename result_of::value_of<First>::type v = *f;
+ return push_front::call(
+ v, next_build_map::call(fusion::next(f), l));
+ }
+ };
+}}}
+
+#endif
Deleted: branches/release/boost/fusion/container/map/detail/convert_impl.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/detail/convert_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,45 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
-
- 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_CONVERT_IMPL_09232005_1340)
-#define FUSION_CONVERT_IMPL_09232005_1340
-
-#include <boost/fusion/container/map/detail/as_map.hpp>
-#include <boost/fusion/container/map/map.hpp>
-#include <boost/fusion/sequence/intrinsic/begin.hpp>
-#include <boost/fusion/sequence/intrinsic/size.hpp>
-
-namespace boost { namespace fusion
-{
- struct map_tag;
-
- namespace extension
- {
- template <typename T>
- struct convert_impl;
-
- template <>
- struct convert_impl<map_tag>
- {
- template <typename Sequence>
- struct apply
- {
- typedef typename detail::as_map<result_of::size<Sequence>::value> gen;
- typedef typename gen::
- template apply<typename result_of::begin<Sequence>::type>::type
- type;
-
- static type call(Sequence& seq)
- {
- return gen::call(fusion::begin(seq));
- }
- };
- };
- }
-}}
-
-#endif
Deleted: branches/release/boost/fusion/container/map/detail/deref_data_impl.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/detail/deref_data_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,47 +0,0 @@
-/*=============================================================================
- Copyright (c) 2009 Christopher Schmidt
-
- 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_FUSION_CONTAINER_MAP_DETAIL_DEREF_DATA_IMPL_HPP
-#define BOOST_FUSION_CONTAINER_MAP_DETAIL_DEREF_DATA_IMPL_HPP
-
-#include <boost/fusion/iterator/value_of.hpp>
-#include <boost/fusion/iterator/deref.hpp>
-#include <boost/fusion/support/detail/access.hpp>
-#include <boost/type_traits/is_const.hpp>
-#include <boost/mpl/if.hpp>
-
-namespace boost { namespace fusion { namespace extension
-{
- template <typename>
- struct deref_data_impl;
-
- template <>
- struct deref_data_impl<map_iterator_tag>
- {
- template <typename It>
- struct apply
- {
- typedef typename result_of::value_of<It>::type::second_type data;
-
- typedef typename
- mpl::if_<
- is_const<typename It::seq_type>
- , typename detail::cref_result<data>::type
- , typename detail::ref_result<data>::type
- >::type
- type;
-
- static type
- call(It const& it)
- {
- return fusion::deref(it).second;
- }
- };
- };
-}}}
-
-#endif
Deleted: branches/release/boost/fusion/container/map/detail/deref_impl.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/detail/deref_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,45 +0,0 @@
-/*=============================================================================
- Copyright (c) 2009 Christopher Schmidt
-
- 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_FUSION_CONTAINER_MAP_DETAIL_DEREF_IMPL_HPP
-#define BOOST_FUSION_CONTAINER_MAP_DETAIL_DEREF_IMPL_HPP
-
-#include <boost/fusion/sequence/intrinsic/at.hpp>
-#include <boost/type_traits/is_const.hpp>
-
-namespace boost { namespace fusion { namespace extension
-{
- template <typename>
- struct deref_impl;
-
- template <>
- struct deref_impl<map_iterator_tag>
- {
- template <typename It>
- struct apply
- {
- typedef typename
- result_of::at<
- typename mpl::if_<
- is_const<typename It::seq_type>
- , typename It::seq_type::storage_type const
- , typename It::seq_type::storage_type
- >::type
- , typename It::index
- >::type
- type;
-
- static type
- call(It const& it)
- {
- return fusion::at<typename It::index>(it.seq->get_data());
- }
- };
- };
-}}}
-
-#endif
Copied: branches/release/boost/fusion/container/map/detail/end_impl.hpp (from r82784, trunk/boost/fusion/container/map/detail/end_impl.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/map/detail/end_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82784, trunk/boost/fusion/container/map/detail/end_impl.hpp)
@@ -0,0 +1,38 @@
+/*=============================================================================
+ Copyright (c) 2005-2013 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(BOOST_FUSION_MAP_END_IMPL_02042013_0857)
+#define BOOST_FUSION_MAP_END_IMPL_02042013_0857
+
+#include <boost/fusion/container/map/map_iterator.hpp>
+
+namespace boost { namespace fusion
+{
+ struct map_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct end_impl;
+
+ template<>
+ struct end_impl<map_tag>
+ {
+ template<typename Sequence>
+ struct apply
+ {
+ typedef map_iterator<Sequence, Sequence::size::value> type;
+
+ static type call(Sequence& seq)
+ {
+ return type(seq);
+ }
+ };
+ };
+ }
+}}
+
+#endif
Deleted: branches/release/boost/fusion/container/map/detail/key_of_impl.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/detail/key_of_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,32 +0,0 @@
-/*=============================================================================
- Copyright (c) 2009 Christopher Schmidt
-
- 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_FUSION_CONTAINER_MAP_DETAIL_KEY_OF_IMPL_HPP
-#define BOOST_FUSION_CONTAINER_MAP_DETAIL_KEY_OF_IMPL_HPP
-
-#include <boost/fusion/container/map/detail/value_of_impl.hpp>
-
-namespace boost { namespace fusion { namespace extension
-{
- template <typename>
- struct key_of_impl;
-
- template <>
- struct key_of_impl<map_iterator_tag>
- {
- template <typename It>
- struct apply
- {
- typedef typename
- value_of_impl<map_iterator_tag>::
- template apply<It>::type::first_type
- type;
- };
- };
-}}}
-
-#endif
Deleted: branches/release/boost/fusion/container/map/detail/map_forward_ctor.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/detail/map_forward_ctor.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,38 +0,0 @@
-/*=============================================================================
- 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_MAP_FORWARD_CTOR_07222005_0106)
-#define FUSION_MAP_FORWARD_CTOR_07222005_0106
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-
-#define BOOST_PP_FILENAME_1 \
- <boost/fusion/container/map/detail/map_forward_ctor.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE)
-#include BOOST_PP_ITERATE()
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
-#if N == 1
- explicit
-#endif
- map(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _))
- : data(BOOST_PP_ENUM_PARAMS(N, _)) {}
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
-
Copied: branches/release/boost/fusion/container/map/detail/map_impl.hpp (from r82784, trunk/boost/fusion/container/map/detail/map_impl.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/map/detail/map_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82784, trunk/boost/fusion/container/map/detail/map_impl.hpp)
@@ -0,0 +1,176 @@
+/*=============================================================================
+ Copyright (c) 2005-2013 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(BOOST_FUSION_MAP_IMPL_02032013_2233)
+#define BOOST_FUSION_MAP_IMPL_02032013_2233
+
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/identity.hpp>
+
+namespace boost { namespace fusion
+{
+ struct fusion_sequence_tag;
+}}
+
+namespace boost { namespace fusion { namespace detail
+{
+ struct map_impl_from_iterator {};
+
+ template <int index, typename ...T>
+ struct map_impl;
+
+ template <int index_>
+ struct map_impl<index_>
+ {
+ typedef fusion_sequence_tag tag;
+ static int const index = index_;
+ static int const size = 0;
+
+ map_impl() {}
+
+ template <typename Iterator>
+ map_impl(Iterator const& iter, map_impl_from_iterator)
+ {}
+
+ template <typename Iterator>
+ void assign(Iterator const& iter, map_impl_from_iterator)
+ {}
+
+ void get();
+ void get_val();
+ void get_key();
+ };
+
+ template <int index_, typename Pair, typename ...T>
+ struct map_impl<index_, Pair, T...> : map_impl<index_ + 1, T...>
+ {
+ typedef fusion_sequence_tag tag;
+ typedef map_impl<index_+1, T...> rest_type;
+
+ using rest_type::get;
+ using rest_type::get_val;
+ using rest_type::get_key;
+
+ static int const index = index_;
+ static int const size = rest_type::size + 1;
+
+ typedef Pair pair_type;
+ typedef typename Pair::first_type key_type;
+ typedef typename Pair::second_type value_type;
+
+ map_impl()
+ : rest_type(), element()
+ {}
+
+ map_impl(map_impl const& rhs)
+ : rest_type(rhs.get_base()), element(rhs.element)
+ {}
+
+ map_impl(map_impl&& rhs)
+ : rest_type(std::forward<rest_type>(*static_cast<rest_type*>(this)))
+ , element(std::forward<Pair>(rhs.element))
+ {}
+
+ template <typename ...U>
+ map_impl(map_impl<index, U...> const& rhs)
+ : rest_type(rhs.get_base()), element(rhs.element)
+ {}
+
+ map_impl(typename detail::call_param<Pair>::type element
+ , typename detail::call_param<T>::type... rest)
+ : rest_type(rest...), element(element)
+ {}
+
+ map_impl(Pair&& element, T&&... rest)
+ : rest_type(std::forward<T>(rest)...)
+ , element(std::forward<Pair>(element))
+ {}
+
+ template <typename Iterator>
+ map_impl(Iterator const& iter, map_impl_from_iterator fi)
+ : rest_type(fusion::next(iter), fi)
+ , element(*iter)
+ {}
+
+ rest_type& get_base()
+ {
+ return *this;
+ }
+
+ rest_type const& get_base() const
+ {
+ return *this;
+ }
+
+ value_type get_val(mpl::identity<key_type>);
+ pair_type get_val(mpl::int_<index>);
+ value_type get_val(mpl::identity<key_type>) const;
+ pair_type get_val(mpl::int_<index>) const;
+
+ key_type get_key(mpl::int_<index>);
+ key_type get_key(mpl::int_<index>) const;
+
+ typename cref_result<value_type>::type
+ get(mpl::identity<key_type>) const
+ {
+ return element.second;
+ }
+
+ typename ref_result<value_type>::type
+ get(mpl::identity<key_type>)
+ {
+ return element.second;
+ }
+
+ typename cref_result<pair_type>::type
+ get(mpl::int_<index>) const
+ {
+ return element;
+ }
+
+ typename ref_result<pair_type>::type
+ get(mpl::int_<index>)
+ {
+ return element;
+ }
+
+ template <typename ...U>
+ map_impl& operator=(map_impl<index, U...> const& rhs)
+ {
+ rest_type::operator=(rhs);
+ element = rhs.element;
+ return *this;
+ }
+
+ map_impl& operator=(map_impl const& rhs)
+ {
+ rest_type::operator=(rhs);
+ element = rhs.element;
+ return *this;
+ }
+
+ map_impl& operator=(map_impl&& rhs)
+ {
+ rest_type::operator=(std::forward<map_impl>(rhs));
+ element = std::forward<Pair>(rhs.element);
+ return *this;
+ }
+
+ template <typename Iterator>
+ void assign(Iterator const& iter, map_impl_from_iterator fi)
+ {
+ rest_type::assign(fusion::next(iter), fi);
+ element = *iter;
+ }
+
+ Pair element;
+ };
+}}}
+
+#endif
Copied: branches/release/boost/fusion/container/map/detail/map_index.hpp (from r82784, trunk/boost/fusion/container/map/detail/map_index.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/map/detail/map_index.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82784, trunk/boost/fusion/container/map/detail/map_index.hpp)
@@ -0,0 +1,19 @@
+/*=============================================================================
+ Copyright (c) 2005-2013 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(BOOST_FUSION_MAP_INDEX_02032013_2233)
+#define BOOST_FUSION_MAP_INDEX_02032013_2233
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <int N>
+ struct map_index
+ {
+ static int const value = N;
+ };
+}}}
+
+#endif
Copied: branches/release/boost/fusion/container/map/detail/value_at_impl.hpp (from r82784, trunk/boost/fusion/container/map/detail/value_at_impl.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/map/detail/value_at_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82784, trunk/boost/fusion/container/map/detail/value_at_impl.hpp)
@@ -0,0 +1,37 @@
+/*=============================================================================
+ Copyright (c) 2001-2013 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(BOOST_FUSION_MAP_DETAIL_VALUE_AT_IMPL_02042013_0821)
+#define BOOST_FUSION_MAP_DETAIL_VALUE_AT_IMPL_02042013_0821
+
+#include <boost/mpl/at.hpp>
+
+namespace boost { namespace fusion
+{
+ struct map_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct value_at_impl;
+
+ template <>
+ struct value_at_impl<map_tag>
+ {
+ template <typename Sequence, typename N>
+ struct apply
+ {
+ typedef mpl::int_<N::value> index;
+ typedef
+ decltype(std::declval<Sequence>().get_val(index()))
+ type;
+ };
+ };
+ }
+}}
+
+#endif
+
Copied: branches/release/boost/fusion/container/map/detail/value_at_key_impl.hpp (from r82784, trunk/boost/fusion/container/map/detail/value_at_key_impl.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/map/detail/value_at_key_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82784, trunk/boost/fusion/container/map/detail/value_at_key_impl.hpp)
@@ -0,0 +1,38 @@
+/*=============================================================================
+ Copyright (c) 2001-2013 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(BOOST_FUSION_MAP_DETAIL_VALUE_AT_KEY_IMPL_02042013_0821)
+#define BOOST_FUSION_MAP_DETAIL_VALUE_AT_KEY_IMPL_02042013_0821
+
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/mpl/at.hpp>
+#include <boost/mpl/identity.hpp>
+
+namespace boost { namespace fusion
+{
+ struct map_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct value_at_key_impl;
+
+ template <>
+ struct value_at_key_impl<map_tag>
+ {
+ template <typename Sequence, typename Key>
+ struct apply
+ {
+ typedef
+ decltype(std::declval<Sequence>().get_val(mpl::identity<Key>()))
+ type;
+ };
+ };
+ }
+}}
+
+#endif
Deleted: branches/release/boost/fusion/container/map/detail/value_of_data_impl.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/detail/value_of_data_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,32 +0,0 @@
-/*=============================================================================
- Copyright (c) 2009 Christopher Schmidt
-
- 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_FUSION_CONTAINER_MAP_DETAIL_VALUE_OF_DATA_IMPL_HPP
-#define BOOST_FUSION_CONTAINER_MAP_DETAIL_VALUE_OF_DATA_IMPL_HPP
-
-#include <boost/fusion/container/map/detail/value_of_impl.hpp>
-
-namespace boost { namespace fusion { namespace extension
-{
- template <typename>
- struct value_of_data_impl;
-
- template <>
- struct value_of_data_impl<map_iterator_tag>
- {
- template <typename It>
- struct apply
- {
- typedef typename
- value_of_impl<map_iterator_tag>::
- template apply<It>::type::second_type
- type;
- };
- };
-}}}
-
-#endif
Deleted: branches/release/boost/fusion/container/map/detail/value_of_impl.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/detail/value_of_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,39 +0,0 @@
-/*=============================================================================
- Copyright (c) 2009 Christopher Schmidt
-
- 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_FUSION_CONTAINER_MAP_DETAIL_VALUE_OF_IMPL_HPP
-#define BOOST_FUSION_CONTAINER_MAP_DETAIL_VALUE_OF_IMPL_HPP
-
-#include <boost/fusion/sequence/intrinsic/value_at.hpp>
-#include <boost/type_traits/is_const.hpp>
-
-namespace boost { namespace fusion { namespace extension
-{
- template <typename>
- struct value_of_impl;
-
- template <>
- struct value_of_impl<map_iterator_tag>
- {
- template <typename It>
- struct apply
- {
- typedef typename
- result_of::value_at<
- typename mpl::if_<
- is_const<typename It::seq_type>
- , typename It::seq_type::storage_type const
- , typename It::seq_type::storage_type
- >::type
- , typename It::index
- >::type
- type;
- };
- };
-}}}
-
-#endif
Deleted: branches/release/boost/fusion/container/map/limits.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/limits.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,27 +0,0 @@
-/*=============================================================================
- 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_MAP_LIMITS_07212005_1104)
-#define FUSION_MAP_LIMITS_07212005_1104
-
-#include <boost/fusion/container/vector/limits.hpp>
-
-#if !defined(FUSION_MAX_MAP_SIZE)
-# define FUSION_MAX_MAP_SIZE FUSION_MAX_VECTOR_SIZE
-#else
-# if FUSION_MAX_MAP_SIZE < 3
-# undef FUSION_MAX_MAP_SIZE
-# if (FUSION_MAX_VECTOR_SIZE > 10)
-# define FUSION_MAX_MAP_SIZE 10
-# else
-# define FUSION_MAX_MAP_SIZE FUSION_MAX_VECTOR_SIZE
-# endif
-# endif
-#endif
-
-#define FUSION_MAX_MAP_SIZE_STR BOOST_PP_STRINGIZE(BOOST_FUSION_PP_ROUND_UP(FUSION_MAX_MAP_SIZE))
-
-#endif
Modified: branches/release/boost/fusion/container/map/map.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/map.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/map/map.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -4,96 +4,115 @@
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_MAP_07212005_1106)
-#define FUSION_MAP_07212005_1106
+#if !defined(FUSION_MAP_MAIN_07212005_1106)
+#define FUSION_MAP_MAIN_07212005_1106
-#include <boost/fusion/support/pair.hpp>
-#include <boost/fusion/support/category_of.hpp>
-#include <boost/fusion/support/detail/access.hpp>
#include <boost/fusion/container/map/map_fwd.hpp>
-#include <boost/fusion/container/map/detail/at_impl.hpp>
-#include <boost/fusion/container/map/detail/value_at_impl.hpp>
-#include <boost/fusion/container/map/detail/begin_impl.hpp>
-#include <boost/fusion/container/map/detail/end_impl.hpp>
-#include <boost/fusion/container/map/detail/value_of_impl.hpp>
-#include <boost/fusion/container/map/detail/deref_data_impl.hpp>
-#include <boost/fusion/container/map/detail/deref_impl.hpp>
-#include <boost/fusion/container/map/detail/key_of_impl.hpp>
-#include <boost/fusion/container/map/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/fusion/support/pair.hpp>
-#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
-#include <boost/fusion/container/map/detail/preprocessed/map.hpp>
+///////////////////////////////////////////////////////////////////////////////
+// Without variadics, we will use the PP version
+///////////////////////////////////////////////////////////////////////////////
+#if !defined(BOOST_FUSION_HAS_VARIADIC_MAP)
+# include <boost/fusion/container/map/detail/cpp03/map.hpp>
#else
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/map" FUSION_MAX_MAP_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!
-==============================================================================*/
+///////////////////////////////////////////////////////////////////////////////
+// C++11 interface
+///////////////////////////////////////////////////////////////////////////////
+#include <boost/fusion/container/map/detail/map_impl.hpp>
+#include <boost/fusion/container/map/detail/begin_impl.hpp>
+#include <boost/fusion/container/map/detail/end_impl.hpp>
+#include <boost/fusion/container/map/detail/at_impl.hpp>
+#include <boost/fusion/container/map/detail/at_key_impl.hpp>
+#include <boost/fusion/container/map/detail/value_at_impl.hpp>
+#include <boost/fusion/container/map/detail/value_at_key_impl.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/sequence/intrinsic/at.hpp>
+#include <boost/fusion/sequence/intrinsic/at_c.hpp>
+#include <boost/fusion/support/is_sequence.hpp>
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/support/category_of.hpp>
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 1)
-#endif
+#include <boost/utility/enable_if.hpp>
namespace boost { namespace fusion
{
- struct void_;
- struct fusion_sequence_tag;
+ struct map_tag;
- template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_MAP_SIZE, typename T)>
- struct map : sequence_base<map<BOOST_PP_ENUM_PARAMS(FUSION_MAX_MAP_SIZE, T)> >
+ template <typename ...T>
+ struct map : detail::map_impl<0, T...>, sequence_base<map<T...>>
{
- struct category : random_access_traversal_tag, associative_tag {};
-
typedef map_tag fusion_tag;
- typedef fusion_sequence_tag tag; // this gets picked up by MPL
+ typedef detail::map_impl<0, T...> base_type;
+
+ struct category : random_access_traversal_tag, associative_tag {};
+ typedef mpl::int_<base_type::size> size;
typedef mpl::false_ is_view;
- typedef vector<
- BOOST_PP_ENUM_PARAMS(FUSION_MAX_MAP_SIZE, T)>
- storage_type;
+ map() {}
- typedef typename storage_type::size size;
+ map(map const& seq)
+ : base_type(seq.base())
+ {}
+
+ map(map&& seq)
+ : base_type(std::forward<map>(seq))
+ {}
- map()
- : data() {}
+ template <typename Sequence>
+ map(Sequence const& seq
+ , typename enable_if<traits::is_sequence<Sequence>>::type* /*dummy*/ = 0)
+ : base_type(begin(seq), detail::map_impl_from_iterator())
+ {}
template <typename Sequence>
- map(Sequence const& rhs)
- : data(rhs) {}
+ map(Sequence& seq
+ , typename enable_if<traits::is_sequence<Sequence>>::type* /*dummy*/ = 0)
+ : base_type(begin(seq), detail::map_impl_from_iterator())
+ {}
- #include <boost/fusion/container/map/detail/map_forward_ctor.hpp>
+ template <typename Sequence>
+ map(Sequence&& seq
+ , typename enable_if<traits::is_sequence<Sequence>>::type* /*dummy*/ = 0)
+ : base_type(begin(seq), detail::map_impl_from_iterator())
+ {}
+
+ template <typename First, typename ...T_>
+ map(First const& first, T_ const&... rest)
+ : base_type(first, rest...)
+ {}
+
+ template <typename First, typename ...T_>
+ map(First&& first, T_&&... rest)
+ : base_type(std::forward<First>(first), std::forward<T_>(rest)...)
+ {}
- template <typename T>
- map&
- operator=(T const& rhs)
+ map& operator=(map const& rhs)
{
- data = rhs;
+ base_type::operator=(rhs.base());
return *this;
}
- storage_type& get_data() { return data; }
- storage_type const& get_data() const { return data; }
+ map& operator=(map&& rhs)
+ {
+ base_type::operator=(std::forward<base_type>(rhs.base()));
+ return *this;
+ }
- private:
+ template <typename Sequence>
+ typename enable_if<traits::is_sequence<Sequence>, map&>::type
+ operator=(Sequence const& seq)
+ {
+ base().assign(begin(seq), detail::map_impl_from_iterator());
+ return *this;
+ }
- storage_type data;
+ base_type& base() { return *this; }
+ base_type const& base() const { 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
Modified: branches/release/boost/fusion/container/map/map_fwd.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/map_fwd.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/map/map_fwd.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -4,49 +4,33 @@
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_MAP_FORWARD_07212005_1105)
-#define FUSION_MAP_FORWARD_07212005_1105
+#if !defined(FUSION_MAP_FORWARD_MAIN_07212005_1105)
+#define FUSION_MAP_FORWARD_MAIN_07212005_1105
-#include <boost/fusion/container/map/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/map/detail/preprocessed/map_fwd.hpp>
+///////////////////////////////////////////////////////////////////////////////
+// With no decltype and variadics, we will use the C++03 version
+///////////////////////////////////////////////////////////////////////////////
+#if (defined(BOOST_NO_CXX11_DECLTYPE) \
+ || defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) \
+ || defined(BOOST_NO_CXX11_RVALUE_REFERENCES))
+# include <boost/fusion/container/map/detail/cpp03/map_fwd.hpp>
#else
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/map" FUSION_MAX_MAP_SIZE_STR "_fwd.hpp")
+# if !defined(BOOST_FUSION_HAS_VARIADIC_MAP)
+# define BOOST_FUSION_HAS_VARIADIC_MAP
#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
+#include <boost/fusion/container/map/detail/map_impl.hpp>
+///////////////////////////////////////////////////////////////////////////////
+// C++11 interface
+///////////////////////////////////////////////////////////////////////////////
namespace boost { namespace fusion
{
- struct void_;
- struct map_tag;
- struct map_iterator_tag;
-
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_MAP_SIZE, typename T, void_)
- >
+ template <typename ...T>
struct map;
}}
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(output: null)
#endif
-
-#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
-
#endif
Copied: branches/release/boost/fusion/container/map/map_iterator.hpp (from r82784, trunk/boost/fusion/container/map/map_iterator.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/map/map_iterator.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82784, trunk/boost/fusion/container/map/map_iterator.hpp)
@@ -0,0 +1,148 @@
+/*=============================================================================
+ Copyright (c) 2005-2013 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ 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(BOOST_FUSION_MAP_ITERATOR_02042013_0835)
+#define BOOST_FUSION_MAP_ITERATOR_02042013_0835
+
+#include <boost/fusion/iterator/iterator_facade.hpp>
+#include <boost/mpl/minus.hpp>
+#include <boost/mpl/equal_to.hpp>
+
+namespace boost { namespace fusion
+{
+ struct random_access_traversal_tag;
+
+ template <typename Seq, int Pos>
+ struct map_iterator
+ : iterator_facade<
+ map_iterator<Seq, Pos>
+ , typename Seq::category>
+ {
+ typedef Seq sequence;
+ typedef mpl::int_<Pos> index;
+
+ map_iterator(Seq& seq)
+ : seq_(seq)
+ {}
+
+ template<typename Iterator>
+ struct value_of
+ {
+ typedef typename Iterator::sequence sequence;
+ typedef typename Iterator::index index;
+ typedef
+ decltype(std::declval<sequence>().get_val(index()))
+ type;
+ };
+
+ template<typename Iterator>
+ struct value_of_data
+ {
+ typedef typename Iterator::sequence sequence;
+ typedef typename Iterator::index index;
+ typedef
+ decltype(std::declval<sequence>().get_val(index()).second)
+ type;
+ };
+
+ template<typename Iterator>
+ struct key_of
+ {
+ typedef typename Iterator::sequence sequence;
+ typedef typename Iterator::index index;
+ typedef
+ decltype(std::declval<sequence>().get_key(index()))
+ type;
+ };
+
+ template<typename Iterator>
+ struct deref
+ {
+ typedef typename Iterator::sequence sequence;
+ typedef typename Iterator::index index;
+ typedef
+ decltype(std::declval<sequence>().get(index()))
+ type;
+
+ static type
+ call(Iterator const& it)
+ {
+ return it.seq_.get(typename Iterator::index());
+ }
+ };
+
+ template<typename Iterator>
+ struct deref_data
+ {
+ typedef typename Iterator::sequence sequence;
+ typedef typename Iterator::index index;
+ typedef
+ decltype(std::declval<sequence>().get(index()).second)
+ type;
+
+ static type
+ call(Iterator const& it)
+ {
+ return it.seq_.get(typename Iterator::index()).second;
+ }
+ };
+
+ template <typename Iterator, typename N>
+ struct advance
+ {
+ typedef typename Iterator::index index;
+ typedef typename Iterator::sequence sequence;
+ typedef map_iterator<sequence, index::value + N::value> type;
+
+ static type
+ call(Iterator const& i)
+ {
+ return type(i.seq_);
+ }
+ };
+
+ template<typename Iterator>
+ struct next
+ : advance<Iterator, mpl::int_<1> >
+ {};
+
+ template<typename Iterator>
+ struct prior
+ : advance<Iterator, mpl::int_<-1> >
+ {};
+
+ template <typename I1, typename I2>
+ struct distance
+ {
+ typedef typename
+ mpl::minus<
+ typename I2::index, typename I1::index
+ >::type
+ type;
+
+ static type
+ call(I1 const&, I2 const&)
+ {
+ return type();
+ }
+ };
+
+ template<typename I1, typename I2>
+ struct equal_to
+ : mpl::equal_to<typename I1::index, typename I2::index>
+ {};
+
+ Seq& seq_;
+
+ private:
+ // silence MSVC warning C4512: assignment operator could not be generated
+ map_iterator& operator= (map_iterator const&);
+ };
+
+}}
+
+#endif
Modified: branches/release/boost/fusion/container/vector/detail/vector_forward_ctor.hpp
==============================================================================
--- branches/release/boost/fusion/container/vector/detail/vector_forward_ctor.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/vector/detail/vector_forward_ctor.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -12,14 +12,14 @@
#include <boost/preprocessor/repetition/enum_params.hpp>
#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#define FUSION_FORWARD_CTOR_MOVE(z, n, _) std::move(_##n)
+#define FUSION_FORWARD_CTOR_FORWARD(z, n, _) std::forward<U##n>(_##n)
#define BOOST_PP_FILENAME_1 \
<boost/fusion/container/vector/detail/vector_forward_ctor.hpp>
#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
#include BOOST_PP_ITERATE()
-#undef FUSION_FORWARD_CTOR_MOVE
+#undef FUSION_FORWARD_CTOR_FORWARD
#endif
#else // defined(BOOST_PP_IS_ITERATING)
///////////////////////////////////////////////////////////////////////////////
@@ -37,12 +37,13 @@
N, typename detail::call_param<T, >::type _))
: vec(BOOST_PP_ENUM_PARAMS(N, _)) {}
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+ template <BOOST_PP_ENUM_PARAMS(N, typename U)>
#if N == 1
explicit
#endif
- vector(BOOST_PP_ENUM_BINARY_PARAMS(N, T, && _))
- : vec(BOOST_PP_ENUM(N, FUSION_FORWARD_CTOR_MOVE, _)) {}
+ vector(BOOST_PP_ENUM_BINARY_PARAMS(N, U, && _))
+ : vec(BOOST_PP_ENUM(N, FUSION_FORWARD_CTOR_FORWARD, _)) {}
#endif
#undef N
Modified: branches/release/boost/fusion/container/vector/detail/vector_n.hpp
==============================================================================
--- branches/release/boost/fusion/container/vector/detail/vector_n.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/vector/detail/vector_n.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -9,21 +9,34 @@
#if !defined(FUSION_MACRO_05042005)
#define FUSION_MACRO_05042005
-#define FUSION_VECTOR_MEMBER_MEMBER_DEFAULT_INIT(z, n, _) m##n()
-#define FUSION_VECTOR_MEMBER_MEMBER_INIT(z, n, _) m##n(_##n)
-#define FUSION_VECTOR_MEMBER_COPY_INIT(z, n, _) m##n(other.m##n)
-#define FUSION_VECTOR_MEMBER_FWD(z, n, _) m##n(std::forward<T##n>(other.m##n))
-#define FUSION_VECTOR_ARG_FWD(z, n, _) m##n(std::forward<T##n>(_##n))
-#define FUSION_VECTOR_MEMBER_MEMBER_DECL(z, n, _) T##n m##n;
-#define FUSION_VECTOR_MEMBER_FORWARD(z, n, _) std::forward<T##n>(_##n)
+#define FUSION_VECTOR_CTOR_DEFAULT_INIT(z, n, _) \
+ m##n()
-#define FUSION_VECTOR_MEMBER_MEMBER_ASSIGN(z, n, _) \
+#define FUSION_VECTOR_CTOR_INIT(z, n, _) \
+ m##n(_##n)
+
+#define FUSION_VECTOR_MEMBER_CTOR_INIT(z, n, _) \
+ m##n(other.m##n)
+
+#define FUSION_VECTOR_CTOR_FORWARD(z, n, _) \
+ m##n(std::forward<T##n>(other.m##n))
+
+#define FUSION_VECTOR_CTOR_ARG_FWD(z, n, _) \
+ m##n(std::forward<U##n>(_##n))
+
+#define FUSION_VECTOR_MEMBER_DECL(z, n, _) \
+ T##n m##n;
+
+#define FUSION_VECTOR_MEMBER_FORWARD(z, n, _) \
+ std::forward<U##n>(_##n)
+
+#define FUSION_VECTOR_MEMBER_ASSIGN(z, n, _) \
this->BOOST_PP_CAT(m, n) = vec.BOOST_PP_CAT(m, n);
-#define FUSION_VECTOR_MEMBER_DEREF_MEMBER_ASSIGN(z, n, _) \
+#define FUSION_VECTOR_MEMBER_DEREF_ASSIGN(z, n, _) \
this->BOOST_PP_CAT(m, n) = *BOOST_PP_CAT(i, n);
-#define FUSION_VECTOR_MEMBER_MEMBER_FORWARD(z, n, _) \
+#define FUSION_VECTOR_MEMBER_MOVE(z, n, _) \
this->BOOST_PP_CAT(m, n) = std::forward< \
BOOST_PP_CAT(T, n)>(vec.BOOST_PP_CAT(m, n));
@@ -47,32 +60,35 @@
struct BOOST_PP_CAT(vector_data, N)
{
BOOST_PP_CAT(vector_data, N)()
- : BOOST_PP_ENUM(N, FUSION_VECTOR_MEMBER_MEMBER_DEFAULT_INIT, _) {}
+ : BOOST_PP_ENUM(N, FUSION_VECTOR_CTOR_DEFAULT_INIT, _) {}
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
- BOOST_PP_CAT(vector_data, N)(BOOST_PP_ENUM_BINARY_PARAMS(N, T, && _))
- : BOOST_PP_ENUM(N, FUSION_VECTOR_ARG_FWD, _) {}
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+ template <BOOST_PP_ENUM_PARAMS(N, typename U)>
+ BOOST_PP_CAT(vector_data, N)(BOOST_PP_ENUM_BINARY_PARAMS(N, U, && _)
+ , typename boost::enable_if<is_convertible<U0, T0> >::type* /*dummy*/ = 0
+ )
+ : BOOST_PP_ENUM(N, FUSION_VECTOR_CTOR_ARG_FWD, _) {}
#endif
BOOST_PP_CAT(vector_data, N)(
BOOST_PP_ENUM_BINARY_PARAMS(
N, typename detail::call_param<T, >::type _))
- : BOOST_PP_ENUM(N, FUSION_VECTOR_MEMBER_MEMBER_INIT, _) {}
+ : BOOST_PP_ENUM(N, FUSION_VECTOR_CTOR_INIT, _) {}
BOOST_PP_CAT(vector_data, N)(
BOOST_PP_CAT(vector_data, N) const& other)
- : BOOST_PP_ENUM(N, FUSION_VECTOR_MEMBER_COPY_INIT, _) {}
+ : BOOST_PP_ENUM(N, FUSION_VECTOR_MEMBER_CTOR_INIT, _) {}
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
BOOST_PP_CAT(vector_data, N)(
BOOST_PP_CAT(vector_data, N)&& other)
- : BOOST_PP_ENUM(N, FUSION_VECTOR_MEMBER_FWD, _) {}
+ : BOOST_PP_ENUM(N, FUSION_VECTOR_CTOR_FORWARD, _) {}
#endif
BOOST_PP_CAT(vector_data, N)&
operator=(BOOST_PP_CAT(vector_data, N) const& vec)
{
- BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_MEMBER_ASSIGN, _)
+ BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_ASSIGN, _)
return *this;
}
@@ -96,7 +112,7 @@
return BOOST_PP_CAT(vector_data, N)(BOOST_PP_ENUM_PARAMS(N, *i));
}
- BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_MEMBER_DECL, _)
+ BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_DECL, _)
};
template <BOOST_PP_ENUM_PARAMS(N, typename T)>
@@ -123,17 +139,25 @@
N, typename detail::call_param<T, >::type _))
: base_type(BOOST_PP_ENUM_PARAMS(N, _)) {}
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+ template <BOOST_PP_ENUM_PARAMS(N, typename U)>
#if (N == 1)
explicit
-#endif
- BOOST_PP_CAT(vector, N)(BOOST_PP_ENUM_BINARY_PARAMS(N, T, && _))
+ BOOST_PP_CAT(vector, N)(U0&& _0
+ , typename boost::enable_if<is_convertible<U0, T0> >::type* /*dummy*/ = 0
+ )
+ : base_type(std::forward<U0>(_0)) {}
+#else
+ BOOST_PP_CAT(vector, N)(BOOST_PP_ENUM_BINARY_PARAMS(N, U, && _))
: base_type(BOOST_PP_ENUM(N, FUSION_VECTOR_MEMBER_FORWARD, _)) {}
#endif
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
BOOST_PP_CAT(vector, N)(BOOST_PP_CAT(vector, N)&& rhs)
: base_type(std::forward<base_type>(rhs)) {}
+
+ BOOST_PP_CAT(vector, N)(BOOST_PP_CAT(vector, N) const& rhs)
+ : base_type(rhs) {}
+
#endif
template <BOOST_PP_ENUM_PARAMS(N, typename U)>
@@ -163,7 +187,7 @@
BOOST_PP_CAT(vector, N)&
operator=(BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, U)> const& vec)
{
- BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_MEMBER_ASSIGN, _)
+ BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_ASSIGN, _)
return *this;
}
@@ -174,15 +198,22 @@
typedef typename result_of::begin<Sequence const>::type I0;
I0 i0 = fusion::begin(seq);
BOOST_PP_REPEAT_FROM_TO(1, N, FUSION_VECTOR_MEMBER_ITER_DECL_VAR, _)
- BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_DEREF_MEMBER_ASSIGN, _)
+ BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_DEREF_ASSIGN, _)
+ return *this;
+ }
+
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+ BOOST_PP_CAT(vector, N)&
+ operator=(BOOST_PP_CAT(vector, N) const& vec)
+ {
+ base_type::operator=(vec);
return *this;
}
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
BOOST_PP_CAT(vector, N)&
operator=(BOOST_PP_CAT(vector, N)&& vec)
{
- BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_MEMBER_FORWARD, _)
+ BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_MOVE, _)
return *this;
}
#endif
Modified: branches/release/boost/fusion/container/vector/vector.hpp
==============================================================================
--- branches/release/boost/fusion/container/vector/vector.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/vector/vector.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -106,7 +106,7 @@
vector(vector const& rhs)
: vec(rhs.vec) {}
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
vector(vector&& rhs)
: vec(std::forward<vector_n>(rhs.vec)) {}
#endif
@@ -140,7 +140,14 @@
return *this;
}
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+ vector&
+ operator=(vector const& rhs)
+ {
+ vec = rhs.vec;
+ return *this;
+ }
+
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
vector&
operator=(vector&& rhs)
{
Modified: branches/release/boost/fusion/functional/adapter/unfused.hpp
==============================================================================
--- branches/release/boost/fusion/functional/adapter/unfused.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/functional/adapter/unfused.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -100,7 +100,7 @@
namespace boost
{
-#if !defined(BOOST_RESULT_OF_USE_DECLTYPE) || defined(BOOST_NO_DECLTYPE)
+#if !defined(BOOST_RESULT_OF_USE_DECLTYPE) || defined(BOOST_NO_CXX11_DECLTYPE)
template<class F>
struct result_of< boost::fusion::unfused<F> const () >
{
Modified: branches/release/boost/fusion/functional/adapter/unfused_typed.hpp
==============================================================================
--- branches/release/boost/fusion/functional/adapter/unfused_typed.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/functional/adapter/unfused_typed.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -80,7 +80,7 @@
namespace boost
{
-#if !defined(BOOST_RESULT_OF_USE_DECLTYPE) || defined(BOOST_NO_DECLTYPE)
+#if !defined(BOOST_RESULT_OF_USE_DECLTYPE) || defined(BOOST_NO_CXX11_DECLTYPE)
template<class F, class Seq>
struct result_of< boost::fusion::unfused_typed<F,Seq> const () >
: boost::fusion::unfused_typed<F,Seq>::template result<
Copied: branches/release/boost/fusion/include/move.hpp (from r82583, trunk/boost/fusion/include/move.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/include/move.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82583, trunk/boost/fusion/include/move.hpp)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2013 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_INCLUDE_MOVE)
+#define FUSION_INCLUDE_MOVE
+
+#include <boost/fusion/algorithm/auxiliary/move.hpp>
+
+#endif
Modified: branches/release/boost/fusion/iterator/detail/segmented_equal_to.hpp
==============================================================================
--- branches/release/boost/fusion/iterator/detail/segmented_equal_to.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/iterator/detail/segmented_equal_to.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -13,7 +13,7 @@
namespace boost { namespace fusion
{
- struct nil;
+ struct nil_;
namespace detail
{
@@ -32,7 +32,7 @@
{};
template <>
- struct segmented_equal_to<fusion::nil, fusion::nil>
+ struct segmented_equal_to<fusion::nil_, fusion::nil_>
: mpl::true_
{};
}
Modified: branches/release/boost/fusion/iterator/detail/segmented_iterator.hpp
==============================================================================
--- branches/release/boost/fusion/iterator/detail/segmented_iterator.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/iterator/detail/segmented_iterator.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -19,7 +19,7 @@
namespace boost { namespace fusion
{
- struct nil;
+ struct nil_;
namespace detail
{
Modified: branches/release/boost/fusion/iterator/detail/segmented_next_impl.hpp
==============================================================================
--- branches/release/boost/fusion/iterator/detail/segmented_next_impl.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/iterator/detail/segmented_next_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -83,7 +83,7 @@
//auto segmented_next_impl_recurse3(stack)
//{
// if (size(stack) == 1)
- // return cons(iterator_range(end(car(stack)), end(car(stack))), nil);
+ // return cons(iterator_range(end(car(stack)), end(car(stack))), nil_);
// else
// return segmented_next_impl_recurse(stack.cdr);
//}
Modified: branches/release/boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp
==============================================================================
--- branches/release/boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -19,10 +19,10 @@
{
//auto segmented_begin( seq )
//{
- // return make_segmented_iterator( segmented_begin_impl( seq, nil ) );
+ // return make_segmented_iterator( segmented_begin_impl( seq, nil_ ) );
//}
- template <typename Sequence, typename Nil = fusion::nil>
+ template <typename Sequence, typename Nil = fusion::nil_>
struct segmented_begin
{
typedef
Modified: branches/release/boost/fusion/sequence/intrinsic/detail/segmented_end.hpp
==============================================================================
--- branches/release/boost/fusion/sequence/intrinsic/detail/segmented_end.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/sequence/intrinsic/detail/segmented_end.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -18,7 +18,7 @@
// return make_segmented_iterator( segmented_end_impl( seq ) );
//}
- template <typename Sequence, typename Nil = fusion::nil>
+ template <typename Sequence, typename Nil = fusion::nil_>
struct segmented_end
{
typedef
Modified: branches/release/boost/fusion/support/deduce_sequence.hpp
==============================================================================
--- branches/release/boost/fusion/support/deduce_sequence.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/support/deduce_sequence.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -32,7 +32,7 @@
{ };
// never called, but needed for decltype-based result_of (C++0x)
-#ifndef BOOST_NO_RVALUE_REFERENCES
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
template <typename T>
typename result< deducer(T) >::type
operator()(T&&) const;
Modified: branches/release/boost/fusion/support/pair.hpp
==============================================================================
--- branches/release/boost/fusion/support/pair.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/support/pair.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -13,6 +13,8 @@
#include <boost/fusion/support/detail/access.hpp>
#include <boost/fusion/support/detail/as_fusion_element.hpp>
#include <boost/config.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_convertible.hpp>
#if defined (BOOST_MSVC)
# pragma warning(push)
@@ -28,9 +30,26 @@
pair()
: second() {}
+ pair(pair const& rhs)
+ : second(rhs.second) {}
+
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+ pair(pair&& rhs)
+ : second(std::forward<Second>(rhs.second)) {}
+#endif
+
pair(typename detail::call_param<Second>::type val)
: second(val) {}
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+
+ template <typename Second2>
+ pair(Second2&& val
+ , typename boost::enable_if<is_convertible<Second2, Second> >::type* /*dummy*/ = 0
+ ) : second(std::forward<Second2>(val)) {}
+
+#endif
+
template <typename Second2>
pair(pair<First, Second2> const& rhs)
: second(rhs.second) {}
@@ -42,6 +61,20 @@
return *this;
}
+ pair& operator=(pair const& rhs)
+ {
+ second = rhs.second;
+ return *this;
+ }
+
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+ pair& operator=(pair&& rhs)
+ {
+ second = std::forward<Second>(rhs.second);
+ return *this;
+ }
+#endif
+
typedef First first_type;
typedef Second second_type;
Second second;
@@ -105,6 +138,13 @@
{
return l.second != r.second;
}
+
+ template <typename First, typename SecondL, typename SecondR>
+ inline bool
+ operator<(pair<First, SecondL> const& l, pair<First, SecondR> const& r)
+ {
+ return l.second < r.second;
+ }
}}
#if defined (BOOST_MSVC)
Modified: branches/release/boost/fusion/support/segmented_fold_until.hpp
==============================================================================
--- branches/release/boost/fusion/support/segmented_fold_until.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/support/segmented_fold_until.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -20,7 +20,7 @@
{
//auto segmented_fold_until(seq, state, fun)
//{
- // return first(segmented_fold_until_impl(seq, state, nil, fun));
+ // return first(segmented_fold_until_impl(seq, state, nil_, fun));
//}
namespace result_of
@@ -32,7 +32,7 @@
detail::segmented_fold_until_impl<
Sequence
, State
- , fusion::nil
+ , fusion::nil_
, Fun
>
filter;
@@ -55,7 +55,7 @@
typename result_of::segmented_fold_until<Sequence, State, Fun>::filter
filter;
- return filter::call(seq, state, fusion::nil(), fun);
+ return filter::call(seq, state, fusion::nil_(), fun);
}
template <typename Sequence, typename State, typename Fun>
@@ -66,7 +66,7 @@
typename result_of::segmented_fold_until<Sequence const, State, Fun>::filter
filter;
- return filter::call(seq, state, fusion::nil(), fun);
+ return filter::call(seq, state, fusion::nil_(), fun);
}
}}
Modified: branches/release/boost/fusion/view/detail/strictest_traversal.hpp
==============================================================================
--- branches/release/boost/fusion/view/detail/strictest_traversal.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/view/detail/strictest_traversal.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -56,7 +56,7 @@
};
// never called, but needed for decltype-based result_of (C++0x)
-#ifndef BOOST_NO_RVALUE_REFERENCES
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
template<typename StrictestSoFar, typename Next>
typename result<strictest_traversal_impl(StrictestSoFar, Next)>::type
operator()(StrictestSoFar&&, Next&&) const;
Modified: branches/release/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp
==============================================================================
--- branches/release/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -70,7 +70,7 @@
// switch (size(stack_begin))
// {
// case 1:
- // return nil;
+ // return nil_;
// case 2:
// // car(cdr(stack_begin)) is a range over values.
// assert(end(front(car(stack_begin))) == end(car(cdr(stack_begin))));
@@ -205,7 +205,7 @@
template <typename Stack>
struct make_segment_sequence_front<Stack, 1>
{
- typedef typename Stack::cdr_type type; // nil
+ typedef typename Stack::cdr_type type; // nil_
static type call(Stack const &stack)
{
@@ -218,7 +218,7 @@
// switch (size(stack_end))
// {
// case 1:
- // return nil;
+ // return nil_;
// case 2:
// // car(cdr(stack_back)) is a range over values.
// assert(end(front(car(stack_end))) == end(car(cdr(stack_end))));
@@ -348,7 +348,7 @@
template <typename Stack>
struct make_segment_sequence_back<Stack, 1>
{
- typedef typename Stack::cdr_type type; // nil
+ typedef typename Stack::cdr_type type; // nil_
static type call(Stack const& stack)
{
Modified: branches/release/boost/fusion/view/nview/nview.hpp
==============================================================================
--- branches/release/boost/fusion/view/nview/nview.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/view/nview/nview.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -37,7 +37,7 @@
template<typename U>
struct result<addref(U)> : add_reference<U> {};
-#ifdef BOOST_NO_RVALUE_REFERENCES
+#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES
template <typename T>
typename add_reference<T>::type
operator()(T& x) const
Modified: branches/release/boost/fusion/view/zip_view/detail/value_at_impl.hpp
==============================================================================
--- branches/release/boost/fusion/view/zip_view/detail/value_at_impl.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/view/zip_view/detail/value_at_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -38,7 +38,7 @@
{};
// never called, but needed for decltype-based result_of (C++0x)
-#ifndef BOOST_NO_RVALUE_REFERENCES
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
template<typename Seq>
typename result<poly_value_at(Seq)>::type
operator()(Seq&&) const;
Modified: branches/release/boost/fusion/view/zip_view/detail/value_of_impl.hpp
==============================================================================
--- branches/release/boost/fusion/view/zip_view/detail/value_of_impl.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/view/zip_view/detail/value_of_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -37,7 +37,7 @@
{};
// never called, but needed for decltype-based result_of (C++0x)
-#ifndef BOOST_NO_RVALUE_REFERENCES
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
template<typename It>
typename result<poly_value_of(It)>::type
operator()(It&&) const;
Modified: branches/release/boost/fusion/view/zip_view/zip_view.hpp
==============================================================================
--- branches/release/boost/fusion/view/zip_view/zip_view.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/view/zip_view/zip_view.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -68,7 +68,7 @@
};
// never called, but needed for decltype-based result_of (C++0x)
-#ifndef BOOST_NO_RVALUE_REFERENCES
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
template<typename Seq>
typename result<seq_ref_size(Seq)>::type
operator()(Seq&&) const;
@@ -89,7 +89,7 @@
};
// never called, but needed for decltype-based result_of (C++0x)
-#ifndef BOOST_NO_RVALUE_REFERENCES
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
template<typename Lhs, typename Rhs>
typename result<poly_min(Lhs, Rhs)>::type
operator()(Lhs&&, Rhs&&) const;
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk