Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
A patch to show the impact of full template specialisations of boost.fusion (patch is against rev. 74355)
Index: boost/fusion/container/vector/detail/equal_to_impl.hpp
===================================================================
--- boost/fusion/container/vector/detail/equal_to_impl.hpp (revision 74355)
+++ boost/fusion/container/vector/detail/equal_to_impl.hpp (working copy)
@@ -17,11 +17,8 @@
namespace extension
{
- template <typename Tag>
- struct equal_to_impl;
-
- template <>
- struct equal_to_impl<vector_iterator_tag>
+ template <typename Dummy>
+ struct equal_to_impl<vector_iterator_tag, Dummy>
{
template <typename I1, typename I2>
struct apply
Index: boost/fusion/container/vector/detail/next_impl.hpp
===================================================================
--- boost/fusion/container/vector/detail/next_impl.hpp (revision 74355)
+++ boost/fusion/container/vector/detail/next_impl.hpp (working copy)
@@ -17,11 +17,8 @@
namespace extension
{
- template <typename Tag>
- struct next_impl;
-
- template <>
- struct next_impl<vector_iterator_tag>
+ template <typename Dummy>
+ struct next_impl<vector_iterator_tag, Dummy>
{
template <typename Iterator>
struct apply
Index: boost/fusion/container/vector/detail/convert_impl.hpp
===================================================================
--- boost/fusion/container/vector/detail/convert_impl.hpp (revision 74355)
+++ boost/fusion/container/vector/detail/convert_impl.hpp (working copy)
@@ -12,6 +12,7 @@
#include <boost/fusion/container/vector/vector.hpp>
#include <boost/fusion/sequence/intrinsic/begin.hpp>
#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/sequence/convert.hpp>
namespace boost { namespace fusion
{
@@ -19,11 +20,8 @@
namespace extension
{
- template <typename T>
- struct convert_impl;
-
- template <>
- struct convert_impl<vector_tag>
+ template <typename Dummy>
+ struct convert_impl<vector_tag, Dummy>
{
template <typename Sequence>
struct apply
Index: boost/fusion/container/vector/detail/begin_impl.hpp
===================================================================
--- boost/fusion/container/vector/detail/begin_impl.hpp (revision 74355)
+++ boost/fusion/container/vector/detail/begin_impl.hpp (working copy)
@@ -15,11 +15,8 @@
namespace extension
{
- template <typename Tag>
- struct begin_impl;
-
- template <>
- struct begin_impl<vector_tag>
+ template <typename Dummy>
+ struct begin_impl<vector_tag, Dummy>
{
template <typename Sequence>
struct apply
Index: boost/fusion/container/vector/detail/deref_impl.hpp
===================================================================
--- boost/fusion/container/vector/detail/deref_impl.hpp (revision 74355)
+++ boost/fusion/container/vector/detail/deref_impl.hpp (working copy)
@@ -17,11 +17,8 @@
namespace extension
{
- template <typename Tag>
- struct deref_impl;
-
- template <>
- struct deref_impl<vector_iterator_tag>
+ template <typename Dummy>
+ struct deref_impl<vector_iterator_tag, Dummy>
{
template <typename Iterator>
struct apply
Index: boost/fusion/container/vector/detail/distance_impl.hpp
===================================================================
--- boost/fusion/container/vector/detail/distance_impl.hpp (revision 74355)
+++ boost/fusion/container/vector/detail/distance_impl.hpp (working copy)
@@ -15,11 +15,8 @@
namespace extension
{
- template <typename Tag>
- struct distance_impl;
-
- template <>
- struct distance_impl<vector_iterator_tag>
+ template <typename Dummy>
+ struct distance_impl<vector_iterator_tag, Dummy>
{
template <typename First, typename Last>
struct apply : mpl::minus<typename Last::index, typename First::index>
Index: boost/fusion/container/vector/detail/prior_impl.hpp
===================================================================
--- boost/fusion/container/vector/detail/prior_impl.hpp (revision 74355)
+++ boost/fusion/container/vector/detail/prior_impl.hpp (working copy)
@@ -17,11 +17,8 @@
namespace extension
{
- template <typename Tag>
- struct prior_impl;
-
- template <>
- struct prior_impl<vector_iterator_tag>
+ template <typename Dummy>
+ struct prior_impl<vector_iterator_tag, Dummy>
{
template <typename Iterator>
struct apply
Index: boost/fusion/container/vector/detail/value_of_impl.hpp
===================================================================
--- boost/fusion/container/vector/detail/value_of_impl.hpp (revision 74355)
+++ boost/fusion/container/vector/detail/value_of_impl.hpp (working copy)
@@ -15,11 +15,8 @@
namespace extension
{
- template <typename Tag>
- struct value_of_impl;
-
- template <>
- struct value_of_impl<vector_iterator_tag>
+ template <typename Dummy>
+ struct value_of_impl<vector_iterator_tag, Dummy>
{
template <typename Iterator>
struct apply
Index: boost/fusion/container/vector/detail/value_at_impl.hpp
===================================================================
--- boost/fusion/container/vector/detail/value_at_impl.hpp (revision 74355)
+++ boost/fusion/container/vector/detail/value_at_impl.hpp (working copy)
@@ -15,11 +15,8 @@
namespace extension
{
- template <typename Tag>
- struct value_at_impl;
-
- template <>
- struct value_at_impl<vector_tag>
+ template <typename Dummy>
+ struct value_at_impl<vector_tag, Dummy>
{
template <typename Sequence, typename N>
struct apply
Index: boost/fusion/container/vector/detail/advance_impl.hpp
===================================================================
--- boost/fusion/container/vector/detail/advance_impl.hpp (revision 74355)
+++ boost/fusion/container/vector/detail/advance_impl.hpp (working copy)
@@ -16,11 +16,8 @@
namespace extension
{
- template <typename Tag>
- struct advance_impl;
-
- template <>
- struct advance_impl<vector_iterator_tag>
+ template <typename Dummy>
+ struct advance_impl<vector_iterator_tag, Dummy>
{
template <typename Iterator, typename N>
struct apply
Index: boost/fusion/container/vector/detail/at_impl.hpp
===================================================================
--- boost/fusion/container/vector/detail/at_impl.hpp (revision 74355)
+++ boost/fusion/container/vector/detail/at_impl.hpp (working copy)
@@ -18,11 +18,8 @@
namespace extension
{
- template <typename Tag>
- struct at_impl;
-
- template <>
- struct at_impl<vector_tag>
+ template <typename Dummy>
+ struct at_impl<vector_tag, Dummy>
{
template <typename Sequence, typename N>
struct apply
Index: boost/fusion/container/vector/detail/as_vector.hpp
===================================================================
--- boost/fusion/container/vector/detail/as_vector.hpp (revision 74355)
+++ boost/fusion/container/vector/detail/as_vector.hpp (working copy)
@@ -22,11 +22,11 @@
namespace boost { namespace fusion { namespace detail
{
- template <int size>
+ template <int size, typename Dummy = void>
struct as_vector;
- template <>
- struct as_vector<0>
+ template <typename Dummy>
+ struct as_vector<0, Dummy>
{
template <typename Iterator>
struct apply
@@ -74,8 +74,8 @@
#define N BOOST_PP_ITERATION()
- template <>
- struct as_vector<N>
+ template <typename Dummy>
+ struct as_vector<N, Dummy>
{
template <typename I0>
struct apply
Index: boost/fusion/container/vector/detail/end_impl.hpp
===================================================================
--- boost/fusion/container/vector/detail/end_impl.hpp (revision 74355)
+++ boost/fusion/container/vector/detail/end_impl.hpp (working copy)
@@ -15,11 +15,8 @@
namespace extension
{
- template <typename Tag>
- struct end_impl;
-
- template <>
- struct end_impl<vector_tag>
+ template <typename Dummy>
+ struct end_impl<vector_tag, Dummy>
{
template <typename Sequence>
struct apply
Index: boost/fusion/container/deque/detail/convert_impl.hpp
===================================================================
--- boost/fusion/container/deque/detail/convert_impl.hpp (revision 74355)
+++ boost/fusion/container/deque/detail/convert_impl.hpp (working copy)
@@ -12,6 +12,7 @@
#include <boost/fusion/container/deque/deque.hpp>
#include <boost/fusion/sequence/intrinsic/begin.hpp>
#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/sequence/convert.hpp>
namespace boost { namespace fusion
{
@@ -19,11 +20,8 @@
namespace extension
{
- template <typename T>
- struct convert_impl;
-
- template <>
- struct convert_impl<deque_tag>
+ template <typename Dummy>
+ struct convert_impl<deque_tag, Dummy>
{
template <typename Sequence>
struct apply
Index: boost/fusion/container/deque/detail/value_at_impl.hpp
===================================================================
--- boost/fusion/container/deque/detail/value_at_impl.hpp (revision 74355)
+++ boost/fusion/container/deque/detail/value_at_impl.hpp (working copy)
@@ -9,6 +9,7 @@
#define BOOST_FUSION_DEQUE_VALUE_AT_IMPL_08122006_0756
#include <boost/fusion/container/deque/detail/keyed_element.hpp>
+#include <boost/fusion/sequence/intrinsic_fwd.hpp>
#include <boost/mpl/equal_to.hpp>
#include <boost/mpl/assert.hpp>
@@ -19,11 +20,8 @@
namespace extension
{
- template<typename T>
- struct value_at_impl;
-
- template<>
- struct value_at_impl<deque_tag>
+ template<typename Dummy>
+ struct value_at_impl<deque_tag, Dummy>
{
template<typename Sequence, typename N>
struct apply
Index: boost/fusion/container/deque/detail/is_sequence_impl.hpp
===================================================================
--- boost/fusion/container/deque/detail/is_sequence_impl.hpp (revision 74355)
+++ boost/fusion/container/deque/detail/is_sequence_impl.hpp (working copy)
@@ -8,6 +8,7 @@
#ifndef BOOST_FUSION_CONTAINER_DEQUE_DETAIL_IS_SEQUENCE_IMPL_HPP
#define BOOST_FUSION_CONTAINER_DEQUE_DETAIL_IS_SEQUENCE_IMPL_HPP
+#include <boost/fusion/support/is_sequence_fwd.hpp>
#include <boost/mpl/bool.hpp>
namespace boost { namespace fusion
@@ -16,11 +17,8 @@
namespace extension
{
- template<typename T>
- struct is_sequence_impl;
-
- template<>
- struct is_sequence_impl<deque_tag>
+ template<typename Dummy>
+ struct is_sequence_impl<deque_tag, Dummy>
{
template<typename Sequence>
struct apply
Index: boost/fusion/container/deque/detail/at_impl.hpp
===================================================================
--- boost/fusion/container/deque/detail/at_impl.hpp (revision 74355)
+++ boost/fusion/container/deque/detail/at_impl.hpp (working copy)
@@ -9,6 +9,7 @@
#define BOOST_FUSION_DEQUE_AT_IMPL_09122006_2017
#include <boost/fusion/container/deque/detail/keyed_element.hpp>
+#include <boost/fusion/sequence/intrinsic_fwd.hpp>
#include <boost/mpl/eval_if.hpp>
#include <boost/mpl/equal_to.hpp>
@@ -25,11 +26,8 @@
namespace extension
{
- template<typename T>
- struct at_impl;
-
- template<>
- struct at_impl<deque_tag>
+ template<typename Dummy>
+ struct at_impl<deque_tag, Dummy>
{
template<typename Sequence, typename N>
struct apply
Index: boost/fusion/container/deque/detail/begin_impl.hpp
===================================================================
--- boost/fusion/container/deque/detail/begin_impl.hpp (revision 74355)
+++ boost/fusion/container/deque/detail/begin_impl.hpp (working copy)
@@ -9,6 +9,7 @@
#define BOOST_FUSION_DEQUE_BEGIN_IMPL_09122006_2034
#include <boost/fusion/container/deque/deque_iterator.hpp>
+#include <boost/fusion/sequence/intrinsic_fwd.hpp>
#include <boost/mpl/equal_to.hpp>
#include <boost/mpl/if.hpp>
@@ -19,11 +20,8 @@
namespace extension
{
- template<typename T>
- struct begin_impl;
-
- template<>
- struct begin_impl<deque_tag>
+ template<typename Dummy>
+ struct begin_impl<deque_tag, Dummy>
{
template<typename Sequence>
struct apply
Index: boost/fusion/container/deque/detail/as_deque.hpp
===================================================================
--- boost/fusion/container/deque/detail/as_deque.hpp (revision 74355)
+++ boost/fusion/container/deque/detail/as_deque.hpp (working copy)
@@ -23,11 +23,11 @@
namespace boost { namespace fusion { namespace detail
{
- template <int size>
+ template <int size, typename Dummy = void>
struct as_deque;
- template <>
- struct as_deque<0>
+ template <typename Dummy>
+ struct as_deque<0, Dummy>
{
template <typename Iterator>
struct apply
@@ -75,8 +75,8 @@
#define N BOOST_PP_ITERATION()
- template <>
- struct as_deque<N>
+ template <typename Dummy>
+ struct as_deque<N, Dummy>
{
template <typename I0>
struct apply
Index: boost/fusion/container/deque/detail/end_impl.hpp
===================================================================
--- boost/fusion/container/deque/detail/end_impl.hpp (revision 74355)
+++ boost/fusion/container/deque/detail/end_impl.hpp (working copy)
@@ -9,7 +9,7 @@
#define BOOST_FUSION_DEQUE_END_IMPL_09122006_2034
#include <boost/fusion/container/deque/deque_iterator.hpp>
-
+#include <boost/fusion/sequence/intrinsic_fwd.hpp>
#include <boost/mpl/equal_to.hpp>
#include <boost/mpl/if.hpp>
@@ -19,11 +19,8 @@
namespace extension
{
- template<typename T>
- struct end_impl;
-
- template<>
- struct end_impl<deque_tag>
+ template<typename Dummy>
+ struct end_impl<deque_tag, Dummy>
{
template<typename Sequence>
struct apply
Index: boost/fusion/container/list/cons_iterator.hpp
===================================================================
--- boost/fusion/container/list/cons_iterator.hpp (revision 74355)
+++ boost/fusion/container/list/cons_iterator.hpp (working copy)
@@ -25,7 +25,7 @@
template <typename Cons>
struct cons_iterator_identity;
- template <typename Cons = nil>
+ template <typename Cons, typename Dummy>
struct cons_iterator : iterator_base<cons_iterator<Cons> >
{
typedef cons_iterator_tag fusion_tag;
@@ -57,29 +57,29 @@
explicit nil_iterator(nil const&) {}
};
- template <>
- struct cons_iterator<nil> : nil_iterator
+ template <typename Dummy>
+ struct cons_iterator<nil, Dummy> : nil_iterator
{
cons_iterator() {}
explicit cons_iterator(nil const&) {}
};
- template <>
- struct cons_iterator<nil const> : nil_iterator
+ template <typename Dummy>
+ struct cons_iterator<nil const, Dummy> : nil_iterator
{
cons_iterator() {}
explicit cons_iterator(nil const&) {}
};
- template <>
- struct cons_iterator<list<> > : nil_iterator
+ template <typename Dummy>
+ struct cons_iterator<list<>, Dummy> : nil_iterator
{
cons_iterator() {}
explicit cons_iterator(nil const&) {}
};
- template <>
- struct cons_iterator<list<> const> : nil_iterator
+ template <typename Dummy>
+ struct cons_iterator<list<> const, Dummy> : nil_iterator
{
cons_iterator() {}
explicit cons_iterator(nil const&) {}
Index: boost/fusion/container/list/detail/equal_to_impl.hpp
===================================================================
--- boost/fusion/container/list/detail/equal_to_impl.hpp (revision 74355)
+++ boost/fusion/container/list/detail/equal_to_impl.hpp (working copy)
@@ -17,11 +17,8 @@
namespace extension
{
- template <typename Tag>
- struct equal_to_impl;
-
- template <>
- struct equal_to_impl<cons_iterator_tag>
+ template <typename Dummy>
+ struct equal_to_impl<cons_iterator_tag, Dummy>
{
template <typename I1, typename I2>
struct apply
Index: boost/fusion/container/list/detail/next_impl.hpp
===================================================================
--- boost/fusion/container/list/detail/next_impl.hpp (revision 74355)
+++ boost/fusion/container/list/detail/next_impl.hpp (working copy)
@@ -19,16 +19,13 @@
{
struct cons_iterator_tag;
- template <typename Cons>
+ template <typename Cons = nil, typename Dummy = void>
struct cons_iterator;
namespace extension
{
- template <typename Tag>
- struct next_impl;
-
- template <>
- struct next_impl<cons_iterator_tag>
+ template <typename Dummy>
+ struct next_impl<cons_iterator_tag, Dummy>
{
template <typename Iterator>
struct apply
Index: boost/fusion/container/list/detail/list_to_cons.hpp
===================================================================
--- boost/fusion/container/list/detail/list_to_cons.hpp (revision 74355)
+++ boost/fusion/container/list/detail/list_to_cons.hpp (working copy)
@@ -24,7 +24,7 @@
namespace boost { namespace fusion { namespace detail
{
- template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, typename T)>
+ template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, typename T), typename Dummy = void>
struct list_to_cons
{
typedef T0 head_type;
@@ -38,8 +38,8 @@
#include <boost/fusion/container/list/detail/list_to_cons_call.hpp>
};
- template <>
- struct list_to_cons<BOOST_PP_ENUM(FUSION_MAX_LIST_SIZE, FUSION_VOID, _)>
+ template <typename Dummy>
+ struct list_to_cons<BOOST_PP_ENUM(FUSION_MAX_LIST_SIZE, FUSION_VOID, _), Dummy>
{
typedef nil type;
};
Index: boost/fusion/container/list/detail/convert_impl.hpp
===================================================================
--- boost/fusion/container/list/detail/convert_impl.hpp (revision 74355)
+++ boost/fusion/container/list/detail/convert_impl.hpp (working copy)
@@ -13,6 +13,7 @@
#include <boost/fusion/sequence/intrinsic/empty.hpp>
#include <boost/fusion/sequence/intrinsic/begin.hpp>
#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/sequence/convert.hpp>
namespace boost { namespace fusion
{
@@ -20,11 +21,8 @@
namespace extension
{
- template <typename T>
- struct convert_impl;
-
- template <>
- struct convert_impl<cons_tag>
+ template <typename Dummy>
+ struct convert_impl<cons_tag, Dummy>
{
template <typename Sequence>
struct apply
Index: boost/fusion/container/list/detail/begin_impl.hpp
===================================================================
--- boost/fusion/container/list/detail/begin_impl.hpp (revision 74355)
+++ boost/fusion/container/list/detail/begin_impl.hpp (working copy)
@@ -20,16 +20,13 @@
template <typename Car, typename Cdr>
struct cons;
- template <typename Cons>
+ template <typename Cons, typename Dummy>
struct cons_iterator;
namespace extension
{
- template <typename Tag>
- struct begin_impl;
-
- template <>
- struct begin_impl<cons_tag>
+ template <typename Dummy>
+ struct begin_impl<cons_tag, Dummy>
{
template <typename Sequence>
struct apply
Index: boost/fusion/container/list/detail/deref_impl.hpp
===================================================================
--- boost/fusion/container/list/detail/deref_impl.hpp (revision 74355)
+++ boost/fusion/container/list/detail/deref_impl.hpp (working copy)
@@ -19,11 +19,8 @@
namespace extension
{
- template <typename Tag>
- struct deref_impl;
-
- template <>
- struct deref_impl<cons_iterator_tag>
+ template <typename Dummy>
+ struct deref_impl<cons_iterator_tag, Dummy>
{
template <typename Iterator>
struct apply
Index: boost/fusion/container/list/detail/empty_impl.hpp
===================================================================
--- boost/fusion/container/list/detail/empty_impl.hpp (revision 74355)
+++ boost/fusion/container/list/detail/empty_impl.hpp (working copy)
@@ -20,11 +20,8 @@
namespace extension
{
- template <typename Tag>
- struct empty_impl;
-
- template <>
- struct empty_impl<cons_tag>
+ template <typename Dummy>
+ struct empty_impl<cons_tag, Dummy>
{
template <typename Sequence>
struct apply
Index: boost/fusion/container/list/detail/value_of_impl.hpp
===================================================================
--- boost/fusion/container/list/detail/value_of_impl.hpp (revision 74355)
+++ boost/fusion/container/list/detail/value_of_impl.hpp (working copy)
@@ -14,11 +14,8 @@
namespace extension
{
- template <typename Tag>
- struct value_of_impl;
-
- template <>
- struct value_of_impl<cons_iterator_tag>
+ template <typename Dummy>
+ struct value_of_impl<cons_iterator_tag, Dummy>
{
template <typename Iterator>
struct apply
Index: boost/fusion/container/list/detail/value_at_impl.hpp
===================================================================
--- boost/fusion/container/list/detail/value_at_impl.hpp (revision 74355)
+++ boost/fusion/container/list/detail/value_at_impl.hpp (working copy)
@@ -18,11 +18,8 @@
namespace extension
{
- template <typename Tag>
- struct value_at_impl;
-
- template <>
- struct value_at_impl<cons_tag>
+ template <typename Dummy>
+ struct value_at_impl<cons_tag, Dummy>
{
template <typename Sequence, typename N>
struct apply
Index: boost/fusion/container/list/detail/at_impl.hpp
===================================================================
--- boost/fusion/container/list/detail/at_impl.hpp (revision 74355)
+++ boost/fusion/container/list/detail/at_impl.hpp (working copy)
@@ -84,11 +84,8 @@
namespace extension
{
- template <typename Tag>
- struct at_impl;
-
- template <>
- struct at_impl<cons_tag>
+ template <typename Dummy>
+ struct at_impl<cons_tag, Dummy>
{
template <typename Sequence, typename N>
struct apply
Index: boost/fusion/container/list/detail/end_impl.hpp
===================================================================
--- boost/fusion/container/list/detail/end_impl.hpp (revision 74355)
+++ boost/fusion/container/list/detail/end_impl.hpp (working copy)
@@ -20,16 +20,13 @@
template <typename Car, typename Cdr>
struct cons;
- template <typename Cons>
+ template <typename Cons, typename Dummy>
struct cons_iterator;
namespace extension
{
- template <typename Tag>
- struct end_impl;
-
- template <>
- struct end_impl<cons_tag>
+ template <typename Dummy>
+ struct end_impl<cons_tag, Dummy>
{
template <typename Sequence>
struct apply
Index: boost/fusion/container/set/detail/value_of_data_impl.hpp
===================================================================
--- boost/fusion/container/set/detail/value_of_data_impl.hpp (revision 74355)
+++ boost/fusion/container/set/detail/value_of_data_impl.hpp (working copy)
@@ -12,11 +12,8 @@
namespace boost { namespace fusion { namespace extension
{
- template <typename>
- struct value_of_data_impl;
-
- template <>
- struct value_of_data_impl<set_iterator_tag>
+ template <typename Dummy>
+ struct value_of_data_impl<set_iterator_tag, Dummy>
: value_of_impl<set_iterator_tag>
{};
}}}
Index: boost/fusion/container/set/detail/key_of_impl.hpp
===================================================================
--- boost/fusion/container/set/detail/key_of_impl.hpp (revision 74355)
+++ boost/fusion/container/set/detail/key_of_impl.hpp (working copy)
@@ -12,11 +12,8 @@
namespace boost { namespace fusion { namespace extension
{
- template <typename>
- struct key_of_impl;
-
- template <>
- struct key_of_impl<set_iterator_tag>
+ template <typename Dummy>
+ struct key_of_impl<set_iterator_tag, Dummy>
: value_of_impl<set_iterator_tag>
{};
}}}
Index: boost/fusion/container/set/detail/as_set.hpp
===================================================================
--- boost/fusion/container/set/detail/as_set.hpp (revision 74355)
+++ boost/fusion/container/set/detail/as_set.hpp (working copy)
@@ -22,11 +22,11 @@
namespace boost { namespace fusion { namespace detail
{
- template <int size>
+ template <int size, typename Dummy = void>
struct as_set;
- template <>
- struct as_set<0>
+ template <typename Dummy>
+ struct as_set<0, Dummy>
{
template <typename Iterator>
struct apply
@@ -74,8 +74,8 @@
#define N BOOST_PP_ITERATION()
- template <>
- struct as_set<N>
+ template <typename Dummy>
+ struct as_set<N, Dummy>
{
template <typename I0>
struct apply
Index: boost/fusion/container/set/detail/deref_data_impl.hpp
===================================================================
--- boost/fusion/container/set/detail/deref_data_impl.hpp (revision 74355)
+++ boost/fusion/container/set/detail/deref_data_impl.hpp (working copy)
@@ -12,11 +12,8 @@
namespace boost { namespace fusion { namespace extension
{
- template <typename>
- struct deref_data_impl;
-
- template <>
- struct deref_data_impl<set_iterator_tag>
+ template <typename Dummy>
+ struct deref_data_impl<set_iterator_tag, Dummy>
: deref_impl<set_iterator_tag>
{};
}}}
Index: boost/fusion/container/set/detail/convert_impl.hpp
===================================================================
--- boost/fusion/container/set/detail/convert_impl.hpp (revision 74355)
+++ boost/fusion/container/set/detail/convert_impl.hpp (working copy)
@@ -12,6 +12,7 @@
#include <boost/fusion/container/set/set.hpp>
#include <boost/fusion/sequence/intrinsic/begin.hpp>
#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/sequence/convert.hpp>
namespace boost { namespace fusion
{
@@ -19,11 +20,8 @@
namespace extension
{
- template <typename T>
- struct convert_impl;
-
- template <>
- struct convert_impl<set_tag>
+ template <typename Dummy>
+ struct convert_impl<set_tag, Dummy>
{
template <typename Sequence>
struct apply
Index: boost/fusion/container/set/detail/value_of_impl.hpp
===================================================================
--- boost/fusion/container/set/detail/value_of_impl.hpp (revision 74355)
+++ boost/fusion/container/set/detail/value_of_impl.hpp (working copy)
@@ -12,11 +12,8 @@
namespace boost { namespace fusion { namespace extension
{
- template <typename>
- struct value_of_impl;
-
- template <>
- struct value_of_impl<set_iterator_tag>
+ template <typename Dummy>
+ struct value_of_impl<set_iterator_tag, Dummy>
{
template <typename It>
struct apply
Index: boost/fusion/container/set/detail/begin_impl.hpp
===================================================================
--- boost/fusion/container/set/detail/begin_impl.hpp (revision 74355)
+++ boost/fusion/container/set/detail/begin_impl.hpp (working copy)
@@ -10,14 +10,12 @@
#define BOOST_FUSION_CONTAINER_SET_DETAIL_BEGIN_IMPL_HPP
#include <boost/fusion/iterator/basic_iterator.hpp>
+#include <boost/fusion/sequence/intrinsic_fwd.hpp>
namespace boost { namespace fusion { namespace extension
{
- template <typename>
- struct begin_impl;
-
- template <>
- struct begin_impl<set_tag>
+ template <typename Dummy>
+ struct begin_impl<set_tag, Dummy>
{
template <typename Seq>
struct apply
Index: boost/fusion/container/set/detail/deref_impl.hpp
===================================================================
--- boost/fusion/container/set/detail/deref_impl.hpp (revision 74355)
+++ boost/fusion/container/set/detail/deref_impl.hpp (working copy)
@@ -13,11 +13,8 @@
namespace boost { namespace fusion { namespace extension
{
- template <typename>
- struct deref_impl;
-
- template <>
- struct deref_impl<set_iterator_tag>
+ template <typename Dummy>
+ struct deref_impl<set_iterator_tag, Dummy>
{
template <typename It>
struct apply
Index: boost/fusion/container/set/detail/end_impl.hpp
===================================================================
--- boost/fusion/container/set/detail/end_impl.hpp (revision 74355)
+++ boost/fusion/container/set/detail/end_impl.hpp (working copy)
@@ -13,11 +13,8 @@
namespace boost { namespace fusion { namespace extension
{
- template <typename>
- struct end_impl;
-
- template <>
- struct end_impl<set_tag>
+ template <typename Dummy>
+ struct end_impl<set_tag, Dummy>
{
template <typename Seq>
struct apply
Index: boost/fusion/container/map/detail/value_of_data_impl.hpp
===================================================================
--- boost/fusion/container/map/detail/value_of_data_impl.hpp (revision 74355)
+++ boost/fusion/container/map/detail/value_of_data_impl.hpp (working copy)
@@ -12,11 +12,8 @@
namespace boost { namespace fusion { namespace extension
{
- template <typename>
- struct value_of_data_impl;
-
- template <>
- struct value_of_data_impl<map_iterator_tag>
+ template <typename Dummy>
+ struct value_of_data_impl<map_iterator_tag, Dummy>
{
template <typename It>
struct apply
Index: boost/fusion/container/map/detail/key_of_impl.hpp
===================================================================
--- boost/fusion/container/map/detail/key_of_impl.hpp (revision 74355)
+++ boost/fusion/container/map/detail/key_of_impl.hpp (working copy)
@@ -12,11 +12,8 @@
namespace boost { namespace fusion { namespace extension
{
- template <typename>
- struct key_of_impl;
-
- template <>
- struct key_of_impl<map_iterator_tag>
+ template <typename Dummy>
+ struct key_of_impl<map_iterator_tag, Dummy>
{
template <typename It>
struct apply
Index: boost/fusion/container/map/detail/deref_data_impl.hpp
===================================================================
--- boost/fusion/container/map/detail/deref_data_impl.hpp (revision 74355)
+++ boost/fusion/container/map/detail/deref_data_impl.hpp (working copy)
@@ -17,11 +17,8 @@
namespace boost { namespace fusion { namespace extension
{
- template <typename>
- struct deref_data_impl;
-
- template <>
- struct deref_data_impl<map_iterator_tag>
+ template <typename Dummy>
+ struct deref_data_impl<map_iterator_tag, Dummy>
{
template <typename It>
struct apply
Index: boost/fusion/container/map/detail/as_map.hpp
===================================================================
--- boost/fusion/container/map/detail/as_map.hpp (revision 74355)
+++ boost/fusion/container/map/detail/as_map.hpp (working copy)
@@ -22,11 +22,11 @@
namespace boost { namespace fusion { namespace detail
{
- template <int size>
+ template <int size, typename Dummy = void>
struct as_map;
- template <>
- struct as_map<0>
+ template <typename Dummy>
+ struct as_map<0, Dummy>
{
template <typename Iterator>
struct apply
@@ -74,8 +74,8 @@
#define N BOOST_PP_ITERATION()
- template <>
- struct as_map<N>
+ template <typename Dummy>
+ struct as_map<N, Dummy>
{
template <typename I0>
struct apply
Index: boost/fusion/container/map/detail/convert_impl.hpp
===================================================================
--- boost/fusion/container/map/detail/convert_impl.hpp (revision 74355)
+++ boost/fusion/container/map/detail/convert_impl.hpp (working copy)
@@ -12,6 +12,7 @@
#include <boost/fusion/container/map/map.hpp>
#include <boost/fusion/sequence/intrinsic/begin.hpp>
#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/sequence/convert.hpp>
namespace boost { namespace fusion
{
@@ -19,11 +20,8 @@
namespace extension
{
- template <typename T>
- struct convert_impl;
-
- template <>
- struct convert_impl<map_tag>
+ template <typename Dummy>
+ struct convert_impl<map_tag, Dummy>
{
template <typename Sequence>
struct apply
Index: boost/fusion/container/map/detail/value_of_impl.hpp
===================================================================
--- boost/fusion/container/map/detail/value_of_impl.hpp (revision 74355)
+++ boost/fusion/container/map/detail/value_of_impl.hpp (working copy)
@@ -13,11 +13,8 @@
namespace boost { namespace fusion { namespace extension
{
- template <typename>
- struct value_of_impl;
-
- template <>
- struct value_of_impl<map_iterator_tag>
+ template <typename Dummy>
+ struct value_of_impl<map_iterator_tag, Dummy>
{
template <typename It>
struct apply
Index: boost/fusion/container/map/detail/begin_impl.hpp
===================================================================
--- boost/fusion/container/map/detail/begin_impl.hpp (revision 74355)
+++ boost/fusion/container/map/detail/begin_impl.hpp (working copy)
@@ -10,14 +10,12 @@
#define BOOST_FUSION_CONTAINER_MAP_DETAIL_BEGIN_IMPL_HPP
#include <boost/fusion/iterator/basic_iterator.hpp>
+#include <boost/fusion/sequence/intrinsic_fwd.hpp>
namespace boost { namespace fusion { namespace extension
{
- template <typename>
- struct begin_impl;
-
- template <>
- struct begin_impl<map_tag>
+ template <typename Dummy>
+ struct begin_impl<map_tag, Dummy>
{
template <typename Seq>
struct apply
Index: boost/fusion/container/map/detail/deref_impl.hpp
===================================================================
--- boost/fusion/container/map/detail/deref_impl.hpp (revision 74355)
+++ boost/fusion/container/map/detail/deref_impl.hpp (working copy)
@@ -13,11 +13,8 @@
namespace boost { namespace fusion { namespace extension
{
- template <typename>
- struct deref_impl;
-
- template <>
- struct deref_impl<map_iterator_tag>
+ template <typename Dummy>
+ struct deref_impl<map_iterator_tag, Dummy>
{
template <typename It>
struct apply
Index: boost/fusion/container/map/detail/end_impl.hpp
===================================================================
--- boost/fusion/container/map/detail/end_impl.hpp (revision 74355)
+++ boost/fusion/container/map/detail/end_impl.hpp (working copy)
@@ -13,11 +13,8 @@
namespace boost { namespace fusion { namespace extension
{
- template <typename>
- struct end_impl;
-
- template <>
- struct end_impl<map_tag>
+ template <typename Dummy>
+ struct end_impl<map_tag, Dummy>
{
template <typename Seq>
struct apply
Index: boost/fusion/algorithm/query/detail/count_if.hpp
===================================================================
--- boost/fusion/algorithm/query/detail/count_if.hpp (revision 74355)
+++ boost/fusion/algorithm/query/detail/count_if.hpp (working copy)
@@ -57,7 +57,7 @@
, typename result_of::end<Sequence>::type>());
}
- template<int n>
+ template<int n, typename Dummy = void>
struct unrolled_count_if
{
template<typename I0, typename F>
@@ -87,8 +87,8 @@
}
};
- template<>
- struct unrolled_count_if<3>
+ template<typename Dummy>
+ struct unrolled_count_if<3, Dummy>
{
template<typename I0, typename F>
static int call(I0 const& i0, F f)
@@ -111,8 +111,8 @@
}
};
- template<>
- struct unrolled_count_if<2>
+ template<typename Dummy>
+ struct unrolled_count_if<2, Dummy>
{
template<typename I0, typename F>
static int call(I0 const& i0, F f)
@@ -131,8 +131,8 @@
}
};
- template<>
- struct unrolled_count_if<1>
+ template<typename Dummy>
+ struct unrolled_count_if<1, Dummy>
{
template<typename I0, typename F>
static int call(I0 const& i0, F f)
@@ -145,8 +145,8 @@
};
- template<>
- struct unrolled_count_if<0>
+ template<typename Dummy>
+ struct unrolled_count_if<0, Dummy>
{
template<typename I0, typename F>
static int call(I0 const&, F)
Index: boost/fusion/algorithm/query/detail/any.hpp
===================================================================
--- boost/fusion/algorithm/query/detail/any.hpp (revision 74355)
+++ boost/fusion/algorithm/query/detail/any.hpp (working copy)
@@ -55,7 +55,7 @@
, typename result_of::end<Sequence>::type>());
}
- template<int N>
+ template<int N, typename Dummy = void>
struct unrolled_any
{
template <typename It, typename F>
@@ -70,8 +70,8 @@
}
};
- template<>
- struct unrolled_any<3>
+ template<typename Dummy>
+ struct unrolled_any<3, Dummy>
{
template <typename It, typename F>
static bool call(It const& it, F f)
@@ -83,8 +83,8 @@
}
};
- template<>
- struct unrolled_any<2>
+ template<typename Dummy>
+ struct unrolled_any<2, Dummy>
{
template <typename It, typename F>
static bool call(It const& it, F f)
@@ -95,8 +95,8 @@
}
};
- template<>
- struct unrolled_any<1>
+ template<typename Dummy>
+ struct unrolled_any<1, Dummy>
{
template <typename It, typename F>
static bool call(It const& it, F f)
@@ -105,8 +105,8 @@
}
};
- template<>
- struct unrolled_any<0>
+ template<typename Dummy>
+ struct unrolled_any<0, Dummy>
{
template <typename It, typename F>
static bool call(It const& it, F f)
Index: boost/fusion/algorithm/query/detail/all.hpp
===================================================================
--- boost/fusion/algorithm/query/detail/all.hpp (revision 74355)
+++ boost/fusion/algorithm/query/detail/all.hpp (working copy)
@@ -52,7 +52,7 @@
, typename result_of::end<Sequence>::type>());
}
- template<int N>
+ template<int N, typename Dummy = void>
struct unrolled_all
{
template <typename It, typename F>
@@ -67,8 +67,8 @@
}
};
- template<>
- struct unrolled_all<3>
+ template<typename Dummy>
+ struct unrolled_all<3, Dummy>
{
template <typename It, typename F>
static bool call(It const& it, F f)
@@ -80,8 +80,8 @@
}
};
- template<>
- struct unrolled_all<2>
+ template<typename Dummy>
+ struct unrolled_all<2, Dummy>
{
template <typename It, typename F>
static bool call(It const& it, F f)
@@ -92,8 +92,8 @@
}
};
- template<>
- struct unrolled_all<1>
+ template<typename Dummy>
+ struct unrolled_all<1, Dummy>
{
template <typename It, typename F>
static bool call(It const& it, F f)
@@ -102,8 +102,8 @@
}
};
- template<>
- struct unrolled_all<0>
+ template<typename Dummy>
+ struct unrolled_all<0, Dummy>
{
template <typename It, typename F>
static bool call(It const& /*it*/, F /*f*/)
Index: boost/fusion/algorithm/query/detail/count.hpp
===================================================================
--- boost/fusion/algorithm/query/detail/count.hpp (revision 74355)
+++ boost/fusion/algorithm/query/detail/count.hpp (working copy)
@@ -19,12 +19,12 @@
namespace boost { namespace fusion { namespace detail
{
- template <bool is_convertible>
+ template <bool is_convertible, typename Dummy = void>
struct compare_convertible;
// T1 is convertible to T2 or vice versa
- template <>
- struct compare_convertible<true>
+ template <typename Dummy>
+ struct compare_convertible<true, Dummy>
{
template <typename T1, typename T2>
static bool
@@ -35,8 +35,8 @@
};
// T1 is NOT convertible to T2 NOR vice versa
- template <>
- struct compare_convertible<false>
+ template <typename Dummy>
+ struct compare_convertible<false, Dummy>
{
template <typename T1, typename T2>
static bool
Index: boost/fusion/algorithm/transformation/zip.hpp
===================================================================
--- boost/fusion/algorithm/transformation/zip.hpp (revision 74355)
+++ boost/fusion/algorithm/transformation/zip.hpp (working copy)
@@ -34,7 +34,7 @@
namespace result_of
{
- template<BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(BOOST_PP_INC(FUSION_MAX_ZIP_SEQUENCES), typename T, fusion::void_)>
+ template<BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(BOOST_PP_INC(FUSION_MAX_ZIP_SEQUENCES), typename T, fusion::void_), typename Dummy = void>
struct zip;
}
@@ -53,13 +53,14 @@
namespace result_of
{
- template< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, typename T) >
#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ template< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, typename T), typename Dummy>
#define TEXT(z, n, text) , text
- struct zip< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(ZIP_ITERATION), FUSION_MAX_ZIP_SEQUENCES, TEXT, void_) >
+ struct zip< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(ZIP_ITERATION), FUSION_MAX_ZIP_SEQUENCES, TEXT, void_), Dummy>
#undef TEXT
#else
- struct zip< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, T) >
+ template< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, typename T)>
+ struct zip< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, T)>
#endif
{
typedef mpl::vector< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, T) > sequences;
Index: boost/fusion/algorithm/transformation/detail/replace_if.hpp
===================================================================
--- boost/fusion/algorithm/transformation/detail/replace_if.hpp (revision 74355)
+++ boost/fusion/algorithm/transformation/detail/replace_if.hpp (working copy)
@@ -13,11 +13,11 @@
namespace boost { namespace fusion { namespace detail
{
- template <bool is_convertible>
+ template <bool is_convertible, typename Dummy = void>
struct replacer_if_helper;
- template <>
- struct replacer_if_helper<false>
+ template <typename Dummy>
+ struct replacer_if_helper<false, Dummy>
{
template <typename U, typename F, typename T>
static U&
@@ -27,8 +27,8 @@
}
};
- template <>
- struct replacer_if_helper<true>
+ template <typename Dummy>
+ struct replacer_if_helper<true, Dummy>
{
template <typename U, typename F, typename T>
static U
Index: boost/fusion/algorithm/transformation/detail/replace.hpp
===================================================================
--- boost/fusion/algorithm/transformation/detail/replace.hpp (revision 74355)
+++ boost/fusion/algorithm/transformation/detail/replace.hpp (working copy)
@@ -13,11 +13,11 @@
namespace boost { namespace fusion { namespace detail
{
- template <bool is_convertible>
+ template <bool is_convertible, typename Dummy = void>
struct replacer_helper;
- template <>
- struct replacer_helper<false>
+ template <typename Dummy>
+ struct replacer_helper<false, Dummy>
{
template <typename U, typename T>
static U&
@@ -27,8 +27,8 @@
}
};
- template <>
- struct replacer_helper<true>
+ template <typename Dummy>
+ struct replacer_helper<true, Dummy>
{
template <typename U, typename T>
static U
Index: boost/fusion/algorithm/iteration/detail/fold.hpp
===================================================================
--- boost/fusion/algorithm/iteration/detail/fold.hpp (revision 74355)
+++ boost/fusion/algorithm/iteration/detail/fold.hpp (working copy)
@@ -186,7 +186,7 @@
{
template<typename State, typename It0, typename F>
static Result
- call(State const& state,It0 const& it0,F f)
+ call(State const& state,It0 const&,F)
{
return static_cast<Result>(state);
}
Index: boost/fusion/algorithm/iteration/detail/for_each.hpp
===================================================================
--- boost/fusion/algorithm/iteration/detail/for_each.hpp (revision 74355)
+++ boost/fusion/algorithm/iteration/detail/for_each.hpp (working copy)
@@ -48,7 +48,7 @@
, typename result_of::end<Sequence>::type>());
}
- template<int N>
+ template<int N, typename Dummy = void>
struct for_each_unrolled
{
template<typename I0, typename F>
@@ -68,8 +68,8 @@
}
};
- template<>
- struct for_each_unrolled<3>
+ template<typename Dummy>
+ struct for_each_unrolled<3, Dummy>
{
template<typename I0, typename F>
static void call(I0 const& i0, F const& f)
@@ -84,8 +84,8 @@
}
};
- template<>
- struct for_each_unrolled<2>
+ template<typename Dummy>
+ struct for_each_unrolled<2, Dummy>
{
template<typename I0, typename F>
static void call(I0 const& i0, F const& f)
@@ -97,8 +97,8 @@
}
};
- template<>
- struct for_each_unrolled<1>
+ template<typename Dummy>
+ struct for_each_unrolled<1, Dummy>
{
template<typename I0, typename F>
static void call(I0 const& i0, F const& f)
@@ -107,8 +107,8 @@
}
};
- template<>
- struct for_each_unrolled<0>
+ template<typename Dummy>
+ struct for_each_unrolled<0, Dummy>
{
template<typename It, typename F>
static void call(It const&, F const&)
Index: boost/fusion/mpl/detail/clear.hpp
===================================================================
--- boost/fusion/mpl/detail/clear.hpp (revision 74355)
+++ boost/fusion/mpl/detail/clear.hpp (working copy)
@@ -23,23 +23,23 @@
namespace detail
{
- template <typename Tag>
+ template <typename Tag, typename Dummy = void>
struct clear;
- template <>
- struct clear<cons_tag> : mpl::identity<list<> > {};
+ template <typename Dummy>
+ struct clear<cons_tag, Dummy> : mpl::identity<list<> > {};
- template <>
- struct clear<map_tag> : mpl::identity<map<> > {};
+ template <typename Dummy>
+ struct clear<map_tag, Dummy> : mpl::identity<map<> > {};
- template <>
- struct clear<set_tag> : mpl::identity<set<> > {};
+ template <typename Dummy>
+ struct clear<set_tag, Dummy> : mpl::identity<set<> > {};
- template <>
- struct clear<vector_tag> : mpl::identity<vector<> > {};
+ template <typename Dummy>
+ struct clear<vector_tag, Dummy> : mpl::identity<vector<> > {};
- template <>
- struct clear<deque_tag> : mpl::identity<deque<> > {};
+ template <typename Dummy>
+ struct clear<deque_tag, Dummy> : mpl::identity<deque<> > {};
}
}}
Index: boost/fusion/iterator/value_of_data.hpp
===================================================================
--- boost/fusion/iterator/value_of_data.hpp (revision 74355)
+++ boost/fusion/iterator/value_of_data.hpp (working copy)
@@ -16,11 +16,11 @@
namespace extension
{
- template <typename>
+ template <typename Tag, typename Dummy = void>
struct value_of_data_impl;
- template <>
- struct value_of_data_impl<iterator_facade_tag>
+ template <typename Dummy>
+ struct value_of_data_impl<iterator_facade_tag, Dummy>
{
template <typename It>
struct apply
Index: boost/fusion/iterator/distance.hpp
===================================================================
--- boost/fusion/iterator/distance.hpp (revision 74355)
+++ boost/fusion/iterator/distance.hpp (working copy)
@@ -16,19 +16,13 @@
#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/iterator/distance_fwd.hpp>
+
namespace boost { namespace fusion
{
- struct random_access_traversal_tag;
-
- // Special tags:
- struct iterator_facade_tag; // iterator facade tag
- struct boost_array_iterator_tag; // boost::array iterator tag
- struct mpl_iterator_tag; // mpl sequence iterator tag
- struct std_pair_iterator_tag; // std::pair iterator tag
-
namespace extension
{
- template <typename Tag>
+ template <typename Tag, typename Dummy>
struct distance_impl
{
// default implementation
@@ -37,21 +31,12 @@
{};
};
- template <>
- struct distance_impl<iterator_facade_tag>
+ template <typename Dummy>
+ struct distance_impl<iterator_facade_tag, Dummy>
{
template <typename First, typename Last>
struct apply : First::template distance<First, Last> {};
};
-
- template <>
- struct distance_impl<boost_array_iterator_tag>;
-
- template <>
- struct distance_impl<mpl_iterator_tag>;
-
- template <>
- struct distance_impl<std_pair_iterator_tag>;
}
namespace result_of
Index: boost/fusion/iterator/basic_iterator.hpp
===================================================================
--- boost/fusion/iterator/basic_iterator.hpp (revision 74355)
+++ boost/fusion/iterator/basic_iterator.hpp (working copy)
@@ -9,6 +9,11 @@
#define BOOST_FUSION_ITERATOR_BASIC_ITERATOR_HPP
#include <boost/fusion/iterator/iterator_facade.hpp>
+#include <boost/fusion/iterator/value_of.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/value_of_data.hpp>
+#include <boost/fusion/iterator/key_of.hpp>
+#include <boost/fusion/iterator/deref_data.hpp>
#include <boost/mpl/and.hpp>
#include <boost/mpl/equal_to.hpp>
@@ -21,19 +26,19 @@
{
namespace extension
{
- template <typename>
+ template <typename, typename>
struct value_of_impl;
- template <typename>
+ template <typename, typename>
struct deref_impl;
- template <typename>
+ template <typename, typename>
struct value_of_data_impl;
- template <typename>
+ template <typename, typename>
struct key_of_impl;
- template <typename>
+ template <typename, typename>
struct deref_data_impl;
}
Index: boost/fusion/iterator/distance_fwd.hpp
===================================================================
--- boost/fusion/iterator/distance_fwd.hpp (revision 0)
+++ boost/fusion/iterator/distance_fwd.hpp (revision 0)
@@ -0,0 +1,36 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 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_DISTANCE_FWD_09172005_0721)
+#define FUSION_DISTANCE_FWD_09172005_0721
+
+namespace boost { namespace fusion
+{
+ struct random_access_traversal_tag;
+
+ // Special tags:
+ struct iterator_facade_tag; // iterator facade tag
+ struct boost_array_iterator_tag; // boost::array iterator tag
+ struct mpl_iterator_tag; // mpl sequence iterator tag
+ struct std_pair_iterator_tag; // std::pair iterator tag
+
+ namespace extension
+ {
+ template <typename Tag, typename Dummy = void>
+ struct distance_impl;
+
+ template <typename Dummy>
+ struct distance_impl<boost_array_iterator_tag, Dummy>;
+
+ template <typename Dummy>
+ struct distance_impl<mpl_iterator_tag, Dummy>;
+
+ template <typename Dummy>
+ struct distance_impl<std_pair_iterator_tag, Dummy>;
+ }
+}}
+
+#endif
Property changes on: boost/fusion/iterator/distance_fwd.hpp
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Index: boost/fusion/iterator/prior.hpp
===================================================================
--- boost/fusion/iterator/prior.hpp (revision 74355)
+++ boost/fusion/iterator/prior.hpp (working copy)
@@ -19,28 +19,28 @@
namespace extension
{
- template <typename Tag>
+ template <typename Tag, typename Dummy = void>
struct prior_impl
{
template <typename Iterator>
struct apply {};
};
- template <>
- struct prior_impl<iterator_facade_tag>
+ template <typename Dummy>
+ struct prior_impl<iterator_facade_tag, Dummy>
{
template <typename Iterator>
struct apply : Iterator::template prior<Iterator> {};
};
- template <>
- struct prior_impl<boost_array_iterator_tag>;
+ template <typename Dummy>
+ struct prior_impl<boost_array_iterator_tag, Dummy>;
- template <>
- struct prior_impl<mpl_iterator_tag>;
+ template <typename Dummy>
+ struct prior_impl<mpl_iterator_tag, Dummy>;
- template <>
- struct prior_impl<std_pair_iterator_tag>;
+ template <typename Dummy>
+ struct prior_impl<std_pair_iterator_tag, Dummy>;
}
namespace result_of
Index: boost/fusion/iterator/value_of.hpp
===================================================================
--- boost/fusion/iterator/value_of.hpp (revision 74355)
+++ boost/fusion/iterator/value_of.hpp (working copy)
@@ -20,28 +20,28 @@
namespace extension
{
- template <typename Tag>
+ template <typename Tag, typename Dummy = void>
struct value_of_impl
{
template <typename Iterator>
struct apply {};
};
- template <>
- struct value_of_impl<iterator_facade_tag>
+ template <typename Dummy>
+ struct value_of_impl<iterator_facade_tag, Dummy>
{
template <typename Iterator>
struct apply : Iterator::template value_of<Iterator> {};
};
- template <>
- struct value_of_impl<boost_array_iterator_tag>;
+ template <typename Dummy>
+ struct value_of_impl<boost_array_iterator_tag, Dummy>;
- template <>
- struct value_of_impl<mpl_iterator_tag>;
+ template <typename Dummy>
+ struct value_of_impl<mpl_iterator_tag, Dummy>;
- template <>
- struct value_of_impl<std_pair_iterator_tag>;
+ template <typename Dummy>
+ struct value_of_impl<std_pair_iterator_tag, Dummy>;
}
namespace result_of
Index: boost/fusion/iterator/advance_fwd.hpp
===================================================================
--- boost/fusion/iterator/advance_fwd.hpp (revision 0)
+++ boost/fusion/iterator/advance_fwd.hpp (revision 0)
@@ -0,0 +1,35 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 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_ADVANCE_FWD_09172005_1146)
+#define FUSION_ADVANCE_FWD_09172005_1146
+namespace boost { namespace fusion
+{
+ struct random_access_traversal_tag;
+
+ // Special tags:
+ struct iterator_facade_tag; // iterator facade tag
+ struct boost_array_iterator_tag; // boost::array iterator tag
+ struct mpl_iterator_tag; // mpl sequence iterator tag
+ struct std_pair_iterator_tag; // std::pair iterator tag
+
+ namespace extension
+ {
+ template <typename Tag, typename Dummy = void>
+ struct advance_impl;
+
+ template <typename Dummy>
+ struct advance_impl<boost_array_iterator_tag, Dummy>;
+
+ template <typename Dummy>
+ struct advance_impl<mpl_iterator_tag, Dummy>;
+
+ template <typename Dummy>
+ struct advance_impl<std_pair_iterator_tag, Dummy>;
+ }
+}}
+
+#endif
Property changes on: boost/fusion/iterator/advance_fwd.hpp
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Index: boost/fusion/iterator/advance.hpp
===================================================================
--- boost/fusion/iterator/advance.hpp (revision 74355)
+++ boost/fusion/iterator/advance.hpp (working copy)
@@ -15,19 +15,13 @@
#include <boost/type_traits/is_same.hpp>
#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/iterator/advance_fwd.hpp>
+
namespace boost { namespace fusion
{
- struct random_access_traversal_tag;
-
- // Special tags:
- struct iterator_facade_tag; // iterator facade tag
- struct boost_array_iterator_tag; // boost::array iterator tag
- struct mpl_iterator_tag; // mpl sequence iterator tag
- struct std_pair_iterator_tag; // std::pair iterator tag
-
namespace extension
{
- template <typename Tag>
+ template <typename Tag, typename Dummy>
struct advance_impl
{
// default implementation
@@ -43,21 +37,12 @@
};
};
- template <>
- struct advance_impl<iterator_facade_tag>
+ template <typename Dummy>
+ struct advance_impl<iterator_facade_tag, Dummy>
{
template <typename Iterator, typename N>
struct apply : Iterator::template advance<Iterator, N> {};
};
-
- template <>
- struct advance_impl<boost_array_iterator_tag>;
-
- template <>
- struct advance_impl<mpl_iterator_tag>;
-
- template <>
- struct advance_impl<std_pair_iterator_tag>;
}
namespace result_of
Index: boost/fusion/iterator/equal_to.hpp
===================================================================
--- boost/fusion/iterator/equal_to.hpp (revision 74355)
+++ boost/fusion/iterator/equal_to.hpp (working copy)
@@ -13,18 +13,13 @@
#include <boost/fusion/support/is_iterator.hpp>
#include <boost/mpl/and.hpp>
#include <boost/utility/enable_if.hpp>
+#include <boost/fusion/iterator/equal_to_fwd.hpp>
namespace boost { namespace fusion
{
- // Special tags:
- struct iterator_facade_tag; // iterator facade tag
- struct boost_array_iterator_tag; // boost::array iterator tag
- struct mpl_iterator_tag; // mpl sequence iterator tag
- struct std_pair_iterator_tag; // std::pair iterator tag
-
namespace extension
{
- template <typename Tag>
+ template <typename Tag, typename Dummy>
struct equal_to_impl
{
// default implementation
@@ -34,8 +29,8 @@
{};
};
- template <>
- struct equal_to_impl<iterator_facade_tag>
+ template <typename Dummy>
+ struct equal_to_impl<iterator_facade_tag, Dummy>
{
template <typename It1, typename It2, typename Tag1, typename Tag2>
struct dispatch : mpl::false_ {};
@@ -51,14 +46,6 @@
{};
};
- template <>
- struct equal_to_impl<boost_array_iterator_tag>;
-
- template <>
- struct equal_to_impl<mpl_iterator_tag>;
-
- template <>
- struct equal_to_impl<std_pair_iterator_tag>;
}
namespace result_of
Index: boost/fusion/iterator/equal_to_fwd.hpp
===================================================================
--- boost/fusion/iterator/equal_to_fwd.hpp (revision 0)
+++ boost/fusion/iterator/equal_to_fwd.hpp (revision 0)
@@ -0,0 +1,34 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 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_EQUAL_TO_FWD_05052005_1208)
+#define FUSION_EQUAL_TO_FWD_05052005_1208
+
+namespace boost { namespace fusion
+{
+ // Special tags:
+ struct iterator_facade_tag; // iterator facade tag
+ struct boost_array_iterator_tag; // boost::array iterator tag
+ struct mpl_iterator_tag; // mpl sequence iterator tag
+ struct std_pair_iterator_tag; // std::pair iterator tag
+
+ namespace extension
+ {
+ template <typename Tag, typename Dummy = void>
+ struct equal_to_impl;
+
+ template <typename Dummy>
+ struct equal_to_impl<boost_array_iterator_tag, Dummy>;
+
+ template <typename Dummy>
+ struct equal_to_impl<mpl_iterator_tag, Dummy>;
+
+ template <typename Dummy>
+ struct equal_to_impl<std_pair_iterator_tag, Dummy>;
+ }
+}}
+
+#endif
Property changes on: boost/fusion/iterator/equal_to_fwd.hpp
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Index: boost/fusion/iterator/key_of.hpp
===================================================================
--- boost/fusion/iterator/key_of.hpp (revision 74355)
+++ boost/fusion/iterator/key_of.hpp (working copy)
@@ -16,11 +16,11 @@
namespace extension
{
- template <typename>
+ template <typename Tag, typename Dummy = void>
struct key_of_impl;
- template <>
- struct key_of_impl<iterator_facade_tag>
+ template <typename Dummy>
+ struct key_of_impl<iterator_facade_tag, Dummy>
{
template <typename It>
struct apply
Index: boost/fusion/iterator/detail/segment_sequence.hpp
===================================================================
--- boost/fusion/iterator/detail/segment_sequence.hpp (revision 74355)
+++ boost/fusion/iterator/detail/segment_sequence.hpp (working copy)
@@ -10,6 +10,7 @@
#include <boost/mpl/bool.hpp>
#include <boost/type_traits/remove_reference.hpp>
#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/support/is_segmented_fwd.hpp>
#include <boost/fusion/sequence/intrinsic_fwd.hpp>
namespace boost { namespace fusion { namespace detail
@@ -37,11 +38,8 @@
namespace extension
{
- template<typename Tag>
- struct is_segmented_impl;
-
- template<>
- struct is_segmented_impl<detail::segment_sequence_tag>
+ template<typename Dummy>
+ struct is_segmented_impl<detail::segment_sequence_tag, Dummy>
{
template<typename Sequence>
struct apply
@@ -49,11 +47,8 @@
{};
};
- template<typename Tag>
- struct segments_impl;
-
- template<>
- struct segments_impl<detail::segment_sequence_tag>
+ template<typename Dummy>
+ struct segments_impl<detail::segment_sequence_tag, Dummy>
{
template<typename Sequence>
struct apply
Index: boost/fusion/iterator/detail/segmented_equal_to.hpp
===================================================================
--- boost/fusion/iterator/detail/segmented_equal_to.hpp (revision 74355)
+++ boost/fusion/iterator/detail/segmented_equal_to.hpp (working copy)
@@ -17,7 +17,7 @@
namespace detail
{
- template <typename Stack1, typename Stack2>
+ template <typename Stack1, typename Stack2, typename Dummy = void>
struct segmented_equal_to
: mpl::and_<
segmented_equal_to<
@@ -31,8 +31,8 @@
>
{};
- template <>
- struct segmented_equal_to<fusion::nil, fusion::nil>
+ template <typename Dummy>
+ struct segmented_equal_to<fusion::nil, fusion::nil, Dummy>
: mpl::true_
{};
}
Index: boost/fusion/iterator/deref_data.hpp
===================================================================
--- boost/fusion/iterator/deref_data.hpp (revision 74355)
+++ boost/fusion/iterator/deref_data.hpp (working copy)
@@ -16,11 +16,11 @@
namespace extension
{
- template <typename>
+ template <typename Tag, typename Dummy = void>
struct deref_data_impl;
- template <>
- struct deref_data_impl<iterator_facade_tag>
+ template <typename Dummy>
+ struct deref_data_impl<iterator_facade_tag, Dummy>
{
template <typename It>
struct apply
Index: boost/fusion/iterator/next.hpp
===================================================================
--- boost/fusion/iterator/next.hpp (revision 74355)
+++ boost/fusion/iterator/next.hpp (working copy)
@@ -19,28 +19,28 @@
namespace extension
{
- template <typename Tag>
+ template <typename Tag, typename Dummy = void>
struct next_impl
{
template <typename Iterator>
struct apply {};
};
- template <>
- struct next_impl<iterator_facade_tag>
+ template <typename Dummy>
+ struct next_impl<iterator_facade_tag, Dummy>
{
template <typename Iterator>
struct apply : Iterator::template next<Iterator> {};
};
- template <>
- struct next_impl<boost_array_iterator_tag>;
+ template <typename Dummy>
+ struct next_impl<boost_array_iterator_tag, Dummy>;
- template <>
- struct next_impl<mpl_iterator_tag>;
+ template <typename Dummy>
+ struct next_impl<mpl_iterator_tag, Dummy>;
- template <>
- struct next_impl<std_pair_iterator_tag>;
+ template <typename Dummy>
+ struct next_impl<std_pair_iterator_tag, Dummy>;
}
namespace result_of
Index: boost/fusion/iterator/deref.hpp
===================================================================
--- boost/fusion/iterator/deref.hpp (revision 74355)
+++ boost/fusion/iterator/deref.hpp (working copy)
@@ -20,28 +20,28 @@
namespace extension
{
- template <typename Tag>
+ template <typename Tag, typename Dummy = void>
struct deref_impl
{
template <typename Iterator>
struct apply {};
};
- template <>
- struct deref_impl<iterator_facade_tag>
+ template <typename Dummy>
+ struct deref_impl<iterator_facade_tag, Dummy>
{
template <typename Iterator>
struct apply : Iterator::template deref<Iterator> {};
- };
+ };
+
+ template <typename Dummy>
+ struct deref_impl<boost_array_iterator_tag, Dummy>;
- template <>
- struct deref_impl<boost_array_iterator_tag>;
+ template <typename Dummy>
+ struct deref_impl<mpl_iterator_tag, Dummy>;
- template <>
- struct deref_impl<mpl_iterator_tag>;
-
- template <>
- struct deref_impl<std_pair_iterator_tag>;
+ template <typename Dummy>
+ struct deref_impl<std_pair_iterator_tag, Dummy>;
}
namespace result_of
Index: boost/fusion/adapted/boost_tuple/detail/size_impl.hpp
===================================================================
--- boost/fusion/adapted/boost_tuple/detail/size_impl.hpp (revision 74355)
+++ boost/fusion/adapted/boost_tuple/detail/size_impl.hpp (working copy)
@@ -7,6 +7,7 @@
#if !defined(BOOST_FUSION_SIZE_IMPL_09272006_0724)
#define BOOST_FUSION_SIZE_IMPL_09272006_0724
+#include <boost/fusion/sequence/intrinsic_fwd.hpp>
#include <boost/tuple/tuple.hpp>
#include <boost/mpl/int.hpp>
@@ -16,11 +17,8 @@
namespace extension
{
- template<typename T>
- struct size_impl;
-
- template <>
- struct size_impl<boost_tuple_tag>
+ template <typename Dummy>
+ struct size_impl<boost_tuple_tag, Dummy>
{
template <typename Sequence>
struct apply : mpl::int_<tuples::length<Sequence>::value> {};
Index: boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp
===================================================================
--- boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp (revision 74355)
+++ boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp (working copy)
@@ -15,11 +15,8 @@
namespace extension
{
- template<typename T>
- struct value_at_impl;
-
- template <>
- struct value_at_impl<boost_tuple_tag>
+ template <typename Dummy>
+ struct value_at_impl<boost_tuple_tag, Dummy>
{
template <typename Sequence, typename N>
struct apply : tuples::element<N::value, Sequence> {};
Index: boost/fusion/adapted/boost_tuple/detail/category_of_impl.hpp
===================================================================
--- boost/fusion/adapted/boost_tuple/detail/category_of_impl.hpp (revision 74355)
+++ boost/fusion/adapted/boost_tuple/detail/category_of_impl.hpp (working copy)
@@ -7,6 +7,8 @@
#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_09272006_0726)
#define BOOST_FUSION_CATEGORY_OF_IMPL_09272006_0726
+#include <boost/fusion/support/category_of_fwd.hpp>
+
namespace boost { namespace fusion
{
struct boost_tuple_tag;
@@ -14,11 +16,8 @@
namespace extension
{
- template<typename T>
- struct category_of_impl;
-
- template<>
- struct category_of_impl<boost_tuple_tag>
+ template<typename Dummy>
+ struct category_of_impl<boost_tuple_tag, Dummy>
{
template<typename T>
struct apply
Index: boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp
===================================================================
--- boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp (revision 74355)
+++ boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp (working copy)
@@ -7,6 +7,7 @@
#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_09272006_0726)
#define BOOST_FUSION_IS_SEQUENCE_IMPL_09272006_0726
+#include <boost/fusion/support/is_sequence_fwd.hpp>
#include <boost/mpl/bool.hpp>
namespace boost { namespace fusion
@@ -15,11 +16,8 @@
namespace extension
{
- template<typename Tag>
- struct is_sequence_impl;
-
- template<>
- struct is_sequence_impl<boost_tuple_tag>
+ template<typename Dummy>
+ struct is_sequence_impl<boost_tuple_tag, Dummy>
{
template<typename Sequence>
struct apply : mpl::true_ {};
Index: boost/fusion/adapted/boost_tuple/detail/at_impl.hpp
===================================================================
--- boost/fusion/adapted/boost_tuple/detail/at_impl.hpp (revision 74355)
+++ boost/fusion/adapted/boost_tuple/detail/at_impl.hpp (working copy)
@@ -16,11 +16,8 @@
namespace extension
{
- template<typename T>
- struct at_impl;
-
- template <>
- struct at_impl<boost_tuple_tag>
+ template <typename Dummy>
+ struct at_impl<boost_tuple_tag, Dummy>
{
template <typename Sequence, typename N>
struct apply
Index: boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp
===================================================================
--- boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp (revision 74355)
+++ boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp (working copy)
@@ -8,6 +8,7 @@
#define BOOST_FUSION_BEGIN_IMPL_09272006_0719
#include <boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp>
+#include <boost/fusion/sequence/intrinsic_fwd.hpp>
namespace boost { namespace fusion
{
@@ -15,11 +16,8 @@
namespace extension
{
- template<typename T>
- struct begin_impl;
-
- template <>
- struct begin_impl<boost_tuple_tag>
+ template <typename Dummy>
+ struct begin_impl<boost_tuple_tag, Dummy>
{
template <typename Sequence>
struct apply
Index: boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp
===================================================================
--- boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp (revision 74355)
+++ boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp (working copy)
@@ -7,6 +7,7 @@
#if !defined(BOOST_FUSION_IS_VIEW_IMPL_09272006_0725)
#define BOOST_FUSION_IS_VIEW_IMPL_09272006_0725
+#include <boost/fusion/support/is_view_fwd.hpp>
#include <boost/mpl/bool.hpp>
namespace boost { namespace fusion
@@ -15,11 +16,8 @@
namespace extension
{
- template<typename Tag>
- struct is_view_impl;
-
- template<>
- struct is_view_impl<boost_tuple_tag>
+ template<typename Dummy>
+ struct is_view_impl<boost_tuple_tag, Dummy>
{
template<typename T>
struct apply : mpl::false_ {};
Index: boost/fusion/adapted/boost_tuple/detail/end_impl.hpp
===================================================================
--- boost/fusion/adapted/boost_tuple/detail/end_impl.hpp (revision 74355)
+++ boost/fusion/adapted/boost_tuple/detail/end_impl.hpp (working copy)
@@ -22,11 +22,8 @@
namespace extension
{
- template <typename Tag>
- struct end_impl;
-
- template <>
- struct end_impl<boost_tuple_tag>
+ template <typename Dummy>
+ struct end_impl<boost_tuple_tag, Dummy>
{
template <typename Sequence>
struct apply
Index: boost/fusion/adapted/boost_tuple/tag_of.hpp
===================================================================
--- boost/fusion/adapted/boost_tuple/tag_of.hpp (revision 74355)
+++ boost/fusion/adapted/boost_tuple/tag_of.hpp (working copy)
@@ -53,8 +53,8 @@
typedef boost_tuple_tag type;
};
- template <>
- struct tag_of<tuples::null_type>
+ template <typename Dummy>
+ struct tag_of<tuples::null_type, Dummy>
{
typedef boost_tuple_tag type;
};
Index: boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp
===================================================================
--- boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp (revision 74355)
+++ boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp (working copy)
@@ -25,23 +25,23 @@
namespace detail
{
- template <typename T>
+ template <typename T, typename Dummy = void>
struct boost_tuple_is_empty : mpl::false_ {};
- template <>
- struct boost_tuple_is_empty<tuples::null_type> : mpl::true_ {};
+ template <typename Dummy>
+ struct boost_tuple_is_empty<tuples::null_type, Dummy> : mpl::true_ {};
- template <>
- struct boost_tuple_is_empty<tuples::null_type const> : mpl::true_ {};
+ template <typename Dummy>
+ struct boost_tuple_is_empty<tuples::null_type const, Dummy> : mpl::true_ {};
- template <>
- struct boost_tuple_is_empty<tuples::tuple<> > : mpl::true_ {};
+ template <typename Dummy>
+ struct boost_tuple_is_empty<tuples::tuple<>, Dummy> : mpl::true_ {};
- template <>
- struct boost_tuple_is_empty<tuples::tuple<> const> : mpl::true_ {};
+ template <typename Dummy>
+ struct boost_tuple_is_empty<tuples::tuple<> const, Dummy> : mpl::true_ {};
}
- template <typename Cons = tuples::null_type>
+ template <typename Cons = tuples::null_type, typename Dummy = void>
struct boost_tuple_iterator
: iterator_facade<boost_tuple_iterator<Cons>, forward_traversal_tag>
{
@@ -151,32 +151,32 @@
{};
};
- template <>
- struct boost_tuple_iterator<tuples::null_type>
+ template <typename Dummy>
+ struct boost_tuple_iterator<tuples::null_type, Dummy>
: boost_tuple_null_iterator<tuples::null_type>
{
template <typename Cons>
explicit boost_tuple_iterator(Cons const&) {}
};
- template <>
- struct boost_tuple_iterator<tuples::null_type const>
+ template <typename Dummy>
+ struct boost_tuple_iterator<tuples::null_type const, Dummy>
: boost_tuple_null_iterator<tuples::null_type const>
{
template <typename Cons>
explicit boost_tuple_iterator(Cons const&) {}
};
- template <>
- struct boost_tuple_iterator<tuples::tuple<> >
+ template <typename Dummy>
+ struct boost_tuple_iterator<tuples::tuple<>, Dummy>
: boost_tuple_null_iterator<tuples::tuple<> >
{
template <typename Cons>
explicit boost_tuple_iterator(Cons const&) {}
};
- template <>
- struct boost_tuple_iterator<tuples::tuple<> const>
+ template <typename Dummy>
+ struct boost_tuple_iterator<tuples::tuple<> const, Dummy>
: boost_tuple_null_iterator<tuples::tuple<> const>
{
template <typename Cons>
Index: boost/fusion/adapted/boost_array/detail/size_impl.hpp
===================================================================
--- boost/fusion/adapted/boost_array/detail/size_impl.hpp (revision 74355)
+++ boost/fusion/adapted/boost_array/detail/size_impl.hpp (working copy)
@@ -8,17 +8,16 @@
#if !defined(BOOST_FUSION_SIZE_IMPL_27122005_1251)
#define BOOST_FUSION_SIZE_IMPL_27122005_1251
+#include <boost/fusion/sequence/intrinsic_fwd.hpp>
+
namespace boost { namespace fusion {
struct boost_array_tag;
namespace extension
{
- template<typename T>
- struct size_impl;
-
- template<>
- struct size_impl<boost_array_tag>
+ template<typename Dummy>
+ struct size_impl<boost_array_tag, Dummy>
{
template<typename Sequence>
struct apply : mpl::int_<Sequence::static_size> {};
Index: boost/fusion/adapted/boost_array/detail/value_at_impl.hpp
===================================================================
--- boost/fusion/adapted/boost_array/detail/value_at_impl.hpp (revision 74355)
+++ boost/fusion/adapted/boost_array/detail/value_at_impl.hpp (working copy)
@@ -14,11 +14,8 @@
namespace extension
{
- template<typename T>
- struct value_at_impl;
-
- template <>
- struct value_at_impl<boost_array_tag>
+ template <typename Dummy>
+ struct value_at_impl<boost_array_tag, Dummy>
{
template <typename Sequence, typename N>
struct apply
Index: boost/fusion/adapted/boost_array/detail/category_of_impl.hpp
===================================================================
--- boost/fusion/adapted/boost_array/detail/category_of_impl.hpp (revision 74355)
+++ boost/fusion/adapted/boost_array/detail/category_of_impl.hpp (working copy)
@@ -8,6 +8,7 @@
#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_27122005_1044)
#define BOOST_FUSION_CATEGORY_OF_IMPL_27122005_1044
+#include <boost/fusion/support/category_of_fwd.hpp>
#include <boost/config/no_tr1/utility.hpp>
namespace boost { namespace fusion {
@@ -17,11 +18,8 @@
namespace extension
{
- template<typename T>
- struct category_of_impl;
-
- template<>
- struct category_of_impl<boost_array_tag>
+ template<typename Dummy>
+ struct category_of_impl<boost_array_tag, Dummy>
{
template<typename T>
struct apply
Index: boost/fusion/adapted/boost_array/detail/is_sequence_impl.hpp
===================================================================
--- boost/fusion/adapted/boost_array/detail/is_sequence_impl.hpp (revision 74355)
+++ boost/fusion/adapted/boost_array/detail/is_sequence_impl.hpp (working copy)
@@ -8,6 +8,7 @@
#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1648)
#define BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1648
+#include <boost/fusion/support/is_sequence_fwd.hpp>
#include <boost/mpl/bool.hpp>
namespace boost { namespace fusion {
@@ -16,11 +17,8 @@
namespace extension
{
- template<typename Tag>
- struct is_sequence_impl;
-
- template<>
- struct is_sequence_impl<boost_array_tag>
+ template<typename Dummy>
+ struct is_sequence_impl<boost_array_tag, Dummy>
{
template<typename Sequence>
struct apply : mpl::true_ {};
Index: boost/fusion/adapted/boost_array/detail/at_impl.hpp
===================================================================
--- boost/fusion/adapted/boost_array/detail/at_impl.hpp (revision 74355)
+++ boost/fusion/adapted/boost_array/detail/at_impl.hpp (working copy)
@@ -8,6 +8,7 @@
#if !defined(BOOST_FUSION_AT_IMPL_27122005_1241)
#define BOOST_FUSION_AT_IMPL_27122005_1241
+#include <boost/fusion/sequence/intrinsic_fwd.hpp>
#include <boost/type_traits/is_const.hpp>
#include <boost/mpl/if.hpp>
@@ -18,11 +19,8 @@
namespace extension
{
- template<typename T>
- struct at_impl;
-
- template<>
- struct at_impl<boost_array_tag>
+ template<typename Dummy>
+ struct at_impl<boost_array_tag, Dummy>
{
template<typename Sequence, typename N>
struct apply
Index: boost/fusion/adapted/boost_array/detail/begin_impl.hpp
===================================================================
--- boost/fusion/adapted/boost_array/detail/begin_impl.hpp (revision 74355)
+++ boost/fusion/adapted/boost_array/detail/begin_impl.hpp (working copy)
@@ -9,6 +9,7 @@
#define BOOST_FUSION_BEGIN_IMPL_27122005_1117
#include <boost/fusion/adapted/boost_array/array_iterator.hpp>
+#include <boost/fusion/sequence/intrinsic_fwd.hpp>
namespace boost { namespace fusion {
@@ -16,11 +17,8 @@
namespace extension
{
- template<typename T>
- struct begin_impl;
-
- template <>
- struct begin_impl<boost_array_tag>
+ template <typename Dummy>
+ struct begin_impl<boost_array_tag, Dummy>
{
template <typename Sequence>
struct apply
Index: boost/fusion/adapted/boost_array/detail/is_view_impl.hpp
===================================================================
--- boost/fusion/adapted/boost_array/detail/is_view_impl.hpp (revision 74355)
+++ boost/fusion/adapted/boost_array/detail/is_view_impl.hpp (working copy)
@@ -8,6 +8,7 @@
#if !defined(BOOST_FUSION_IS_VIEW_IMPL_27042006_2221)
#define BOOST_FUSION_IS_VIEW_IMPL_27042006_2221
+#include <boost/fusion/support/is_view_fwd.hpp>
#include <boost/mpl/bool.hpp>
namespace boost { namespace fusion
@@ -16,11 +17,8 @@
namespace extension
{
- template<typename Tag>
- struct is_view_impl;
-
- template<>
- struct is_view_impl<boost_array_tag>
+ template<typename Dummy>
+ struct is_view_impl<boost_array_tag, Dummy>
{
template<typename T>
struct apply : mpl::false_
Index: boost/fusion/adapted/boost_array/detail/end_impl.hpp
===================================================================
--- boost/fusion/adapted/boost_array/detail/end_impl.hpp (revision 74355)
+++ boost/fusion/adapted/boost_array/detail/end_impl.hpp (working copy)
@@ -16,11 +16,8 @@
namespace extension
{
- template <typename Tag>
- struct end_impl;
-
- template <>
- struct end_impl<boost_array_tag>
+ template <typename Dummy>
+ struct end_impl<boost_array_tag, Dummy>
{
template <typename Sequence>
struct apply
Index: boost/fusion/adapted/struct/detail/size_impl.hpp
===================================================================
--- boost/fusion/adapted/struct/detail/size_impl.hpp (revision 74355)
+++ boost/fusion/adapted/struct/detail/size_impl.hpp (working copy)
@@ -10,13 +10,12 @@
#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_SIZE_IMPL_HPP
#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_SIZE_IMPL_HPP
+#include <boost/fusion/sequence/intrinsic_fwd.hpp>
+
namespace boost { namespace fusion { namespace extension
{
- template<typename>
- struct size_impl;
-
- template <>
- struct size_impl<struct_tag>
+ template <typename Dummy>
+ struct size_impl<struct_tag, Dummy>
{
template <typename Seq>
struct apply
@@ -24,9 +23,9 @@
{};
};
- template <>
- struct size_impl<assoc_struct_tag>
- : size_impl<struct_tag>
+ template <typename Dummy>
+ struct size_impl<assoc_struct_tag, Dummy>
+ : size_impl<struct_tag, Dummy>
{};
}}}
Index: boost/fusion/adapted/struct/detail/key_of_impl.hpp
===================================================================
--- boost/fusion/adapted/struct/detail/key_of_impl.hpp (revision 74355)
+++ boost/fusion/adapted/struct/detail/key_of_impl.hpp (working copy)
@@ -10,11 +10,8 @@
namespace boost { namespace fusion { namespace extension
{
- template <typename>
- struct key_of_impl;
-
- template <>
- struct key_of_impl<struct_iterator_tag>
+ template <typename Dummy>
+ struct key_of_impl<struct_iterator_tag, Dummy>
{
template <typename It>
struct apply
Index: boost/fusion/adapted/struct/detail/deref_data_impl.hpp
===================================================================
--- boost/fusion/adapted/struct/detail/deref_data_impl.hpp (revision 74355)
+++ boost/fusion/adapted/struct/detail/deref_data_impl.hpp (working copy)
@@ -10,12 +10,9 @@
namespace boost { namespace fusion { namespace extension
{
- template <typename>
- struct deref_data_impl;
-
- template <>
- struct deref_data_impl<struct_iterator_tag>
- : deref_impl<struct_iterator_tag>
+ template <typename Dummy>
+ struct deref_data_impl<struct_iterator_tag, Dummy>
+ : deref_impl<struct_iterator_tag, Dummy>
{};
}}}
Index: boost/fusion/adapted/struct/detail/begin_impl.hpp
===================================================================
--- boost/fusion/adapted/struct/detail/begin_impl.hpp (revision 74355)
+++ boost/fusion/adapted/struct/detail/begin_impl.hpp (working copy)
@@ -14,11 +14,8 @@
namespace boost { namespace fusion { namespace extension
{
- template<typename>
- struct begin_impl;
-
- template <>
- struct begin_impl<struct_tag>
+ template <typename Dummy>
+ struct begin_impl<struct_tag, Dummy>
{
template <typename Seq>
struct apply
@@ -40,8 +37,8 @@
};
};
- template <>
- struct begin_impl<assoc_struct_tag>
+ template <typename Dummy>
+ struct begin_impl<assoc_struct_tag, Dummy>
{
template <typename Seq>
struct apply
Index: boost/fusion/adapted/struct/detail/deref_impl.hpp
===================================================================
--- boost/fusion/adapted/struct/detail/deref_impl.hpp (revision 74355)
+++ boost/fusion/adapted/struct/detail/deref_impl.hpp (working copy)
@@ -10,11 +10,8 @@
namespace boost { namespace fusion { namespace extension
{
- template <typename>
- struct deref_impl;
-
- template <>
- struct deref_impl<struct_iterator_tag>
+ template <typename Dummy>
+ struct deref_impl<struct_iterator_tag, Dummy>
{
template <typename It>
struct apply
Index: boost/fusion/adapted/struct/detail/value_of_data_impl.hpp
===================================================================
--- boost/fusion/adapted/struct/detail/value_of_data_impl.hpp (revision 74355)
+++ boost/fusion/adapted/struct/detail/value_of_data_impl.hpp (working copy)
@@ -10,11 +10,8 @@
namespace boost { namespace fusion { namespace extension
{
- template <typename>
- struct value_of_data_impl;
-
- template <>
- struct value_of_data_impl<struct_iterator_tag>
+ template <typename Dummy>
+ struct value_of_data_impl<struct_iterator_tag, Dummy>
: value_of_impl<struct_iterator_tag>
{};
}}}
Index: boost/fusion/adapted/struct/detail/value_at_impl.hpp
===================================================================
--- boost/fusion/adapted/struct/detail/value_at_impl.hpp (revision 74355)
+++ boost/fusion/adapted/struct/detail/value_at_impl.hpp (working copy)
@@ -12,11 +12,8 @@
namespace boost { namespace fusion { namespace extension
{
- template<typename>
- struct value_at_impl;
-
- template <>
- struct value_at_impl<struct_tag>
+ template <typename Dummy>
+ struct value_at_impl<struct_tag, Dummy>
{
template <typename Seq, typename N>
struct apply
@@ -24,8 +21,8 @@
{};
};
- template <>
- struct value_at_impl<assoc_struct_tag>
+ template <typename Dummy>
+ struct value_at_impl<assoc_struct_tag, Dummy>
: value_at_impl<struct_tag>
{};
}}}
Index: boost/fusion/adapted/struct/detail/value_of_impl.hpp
===================================================================
--- boost/fusion/adapted/struct/detail/value_of_impl.hpp (revision 74355)
+++ boost/fusion/adapted/struct/detail/value_of_impl.hpp (working copy)
@@ -10,11 +10,8 @@
namespace boost { namespace fusion { namespace extension
{
- template <typename>
- struct value_of_impl;
-
- template <>
- struct value_of_impl<struct_iterator_tag>
+ template <typename Dummy>
+ struct value_of_impl<struct_iterator_tag, Dummy>
{
template <typename It>
struct apply
Index: boost/fusion/adapted/struct/detail/category_of_impl.hpp
===================================================================
--- boost/fusion/adapted/struct/detail/category_of_impl.hpp (revision 74355)
+++ boost/fusion/adapted/struct/detail/category_of_impl.hpp (working copy)
@@ -10,15 +10,14 @@
#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_CATEGORY_OF_IMPL_HPP
#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_CATEGORY_OF_IMPL_HPP
+#include <boost/fusion/support/category_of_fwd.hpp>
+
namespace boost { namespace fusion
{
namespace extension
{
- template<typename>
- struct category_of_impl;
-
- template<>
- struct category_of_impl<struct_tag>
+ template<typename Dummy>
+ struct category_of_impl<struct_tag, Dummy>
{
template<typename Seq>
struct apply
@@ -27,8 +26,8 @@
};
};
- template<>
- struct category_of_impl<assoc_struct_tag>
+ template<typename Dummy>
+ struct category_of_impl<assoc_struct_tag, Dummy>
{
template<typename Seq>
struct apply
Index: boost/fusion/adapted/struct/detail/is_sequence_impl.hpp
===================================================================
--- boost/fusion/adapted/struct/detail/is_sequence_impl.hpp (revision 74355)
+++ boost/fusion/adapted/struct/detail/is_sequence_impl.hpp (working copy)
@@ -11,14 +11,12 @@
#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_IS_SEQUENCE_IMPL_HPP
#include <boost/mpl/bool.hpp>
+#include <boost/fusion/support/is_sequence_fwd.hpp>
namespace boost { namespace fusion { namespace extension
{
- template<typename>
- struct is_sequence_impl;
-
- template<>
- struct is_sequence_impl<struct_tag>
+ template<typename Dummy>
+ struct is_sequence_impl<struct_tag, Dummy>
{
template<typename Seq>
struct apply
@@ -26,8 +24,8 @@
{};
};
- template <>
- struct is_sequence_impl<assoc_struct_tag>
+ template<typename Dummy>
+ struct is_sequence_impl<assoc_struct_tag, Dummy>
: is_sequence_impl<struct_tag>
{};
}}}
Index: boost/fusion/adapted/struct/detail/at_impl.hpp
===================================================================
--- boost/fusion/adapted/struct/detail/at_impl.hpp (revision 74355)
+++ boost/fusion/adapted/struct/detail/at_impl.hpp (working copy)
@@ -11,14 +11,12 @@
#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_AT_IMPL_HPP
#include <boost/mpl/int.hpp>
+#include <boost/fusion/sequence/intrinsic_fwd.hpp>
namespace boost { namespace fusion { namespace extension
{
- template<typename>
- struct at_impl;
-
- template <>
- struct at_impl<struct_tag>
+ template <typename Dummy>
+ struct at_impl<struct_tag, Dummy>
{
template <typename Seq, typename N>
struct apply
@@ -29,8 +27,8 @@
{};
};
- template <>
- struct at_impl<assoc_struct_tag>
+ template <typename Dummy>
+ struct at_impl<assoc_struct_tag, Dummy>
: at_impl<struct_tag>
{};
}}}
Index: boost/fusion/adapted/struct/detail/is_view_impl.hpp
===================================================================
--- boost/fusion/adapted/struct/detail/is_view_impl.hpp (revision 74355)
+++ boost/fusion/adapted/struct/detail/is_view_impl.hpp (working copy)
@@ -10,13 +10,12 @@
#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_IS_VIEW_IMPL_HPP
#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_IS_VIEW_IMPL_HPP
+#include <boost/fusion/support/is_view_fwd.hpp>
+
namespace boost { namespace fusion { namespace extension
{
- template<typename>
- struct is_view_impl;
-
- template<>
- struct is_view_impl<struct_tag>
+ template<typename Dummy>
+ struct is_view_impl<struct_tag, Dummy>
{
template<typename Seq>
struct apply
@@ -24,8 +23,8 @@
{};
};
- template <>
- struct is_view_impl<assoc_struct_tag>
+ template<typename Dummy>
+ struct is_view_impl<assoc_struct_tag, Dummy>
: is_view_impl<struct_tag>
{};
}}}
Index: boost/fusion/adapted/struct/detail/end_impl.hpp
===================================================================
--- boost/fusion/adapted/struct/detail/end_impl.hpp (revision 74355)
+++ boost/fusion/adapted/struct/detail/end_impl.hpp (working copy)
@@ -14,11 +14,8 @@
namespace boost { namespace fusion { namespace extension
{
- template <typename>
- struct end_impl;
-
- template <>
- struct end_impl<struct_tag>
+ template <typename Dummy>
+ struct end_impl<struct_tag, Dummy>
{
template <typename Seq>
struct apply
@@ -40,8 +37,8 @@
};
};
- template <>
- struct end_impl<assoc_struct_tag>
+ template <typename Dummy>
+ struct end_impl<assoc_struct_tag, Dummy>
{
template <typename Seq>
struct apply
Index: boost/fusion/adapted/mpl/detail/size_impl.hpp
===================================================================
--- boost/fusion/adapted/mpl/detail/size_impl.hpp (revision 74355)
+++ boost/fusion/adapted/mpl/detail/size_impl.hpp (working copy)
@@ -8,6 +8,7 @@
#if !defined(BOOST_FUSION_SIZE_IMPL_31122005_1508)
#define BOOST_FUSION_SIZE_IMPL_31122005_1508
+#include <boost/fusion/sequence/intrinsic_fwd.hpp>
#include <boost/mpl/size.hpp>
namespace boost { namespace fusion
@@ -16,11 +17,8 @@
namespace extension
{
- template<typename Tag>
- struct size_impl;
-
- template <>
- struct size_impl<mpl_sequence_tag>
+ template <typename Dummy>
+ struct size_impl<mpl_sequence_tag, Dummy>
{
template <typename Sequence>
struct apply : mpl::size<Sequence> {};
Index: boost/fusion/adapted/mpl/detail/empty_impl.hpp
===================================================================
--- boost/fusion/adapted/mpl/detail/empty_impl.hpp (revision 74355)
+++ boost/fusion/adapted/mpl/detail/empty_impl.hpp (working copy)
@@ -16,11 +16,8 @@
namespace extension
{
- template <typename Sequence>
- struct empty_impl;
-
- template <>
- struct empty_impl<mpl_sequence_tag>
+ template <typename Dummy>
+ struct empty_impl<mpl_sequence_tag, Dummy>
{
template <typename Sequence>
struct apply : mpl::empty<Sequence> {};
Index: boost/fusion/adapted/mpl/detail/value_at_impl.hpp
===================================================================
--- boost/fusion/adapted/mpl/detail/value_at_impl.hpp (revision 74355)
+++ boost/fusion/adapted/mpl/detail/value_at_impl.hpp (working copy)
@@ -16,11 +16,8 @@
namespace extension
{
- template <typename Tag>
- struct value_at_impl;
-
- template <>
- struct value_at_impl<mpl_sequence_tag>
+ template <typename Dummy>
+ struct value_at_impl<mpl_sequence_tag, Dummy>
{
template <typename Sequence, typename N>
struct apply : mpl::at<Sequence, N> {};
Index: boost/fusion/adapted/mpl/detail/category_of_impl.hpp
===================================================================
--- boost/fusion/adapted/mpl/detail/category_of_impl.hpp (revision 74355)
+++ boost/fusion/adapted/mpl/detail/category_of_impl.hpp (working copy)
@@ -8,6 +8,7 @@
#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_20060217_2141)
#define BOOST_FUSION_CATEGORY_OF_IMPL_20060217_2141
+#include <boost/fusion/support/category_of_fwd.hpp>
#include <boost/fusion/support/detail/mpl_iterator_category.hpp>
#include <boost/mpl/begin_end.hpp>
#include <boost/mpl/is_sequence.hpp>
@@ -37,11 +38,11 @@
namespace extension
{
- template<typename Tag>
+ template<typename Tag, typename Dummy>
struct category_of_impl;
- template<>
- struct category_of_impl<mpl_sequence_tag>
+ template<typename Dummy>
+ struct category_of_impl<mpl_sequence_tag, Dummy>
{
template<typename T>
struct apply
Index: boost/fusion/adapted/mpl/detail/has_key_impl.hpp
===================================================================
--- boost/fusion/adapted/mpl/detail/has_key_impl.hpp (revision 74355)
+++ boost/fusion/adapted/mpl/detail/has_key_impl.hpp (working copy)
@@ -16,11 +16,8 @@
namespace extension
{
- template <typename Tag>
- struct has_key_impl;
-
- template <>
- struct has_key_impl<mpl_sequence_tag>
+ template <typename Dummy>
+ struct has_key_impl<mpl_sequence_tag, Dummy>
{
template <typename Sequence, typename Key>
struct apply : mpl::has_key<Sequence, Key> {};
Index: boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp
===================================================================
--- boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp (revision 74355)
+++ boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp (working copy)
@@ -8,6 +8,7 @@
#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_31122005_1505)
#define BOOST_FUSION_IS_SEQUENCE_IMPL_31122005_1505
+#include <boost/fusion/support/is_sequence_fwd.hpp>
#include <boost/mpl/bool.hpp>
namespace boost { namespace fusion
@@ -16,11 +17,8 @@
namespace extension
{
- template<typename Tag>
- struct is_sequence_impl;