Index: third_party/boost/boost/fusion/iterator/iterator_facade.hpp |
diff --git a/third_party/boost/boost/fusion/iterator/iterator_facade.hpp b/third_party/boost/boost/fusion/iterator/iterator_facade.hpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f1720bdba44fac4bd6436d0eee2bee85cec1f105 |
--- /dev/null |
+++ b/third_party/boost/boost/fusion/iterator/iterator_facade.hpp |
@@ -0,0 +1,50 @@ |
+/*============================================================================= |
+ 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_ITERATOR_FACADE_09252006_1011) |
+#define FUSION_ITERATOR_FACADE_09252006_1011 |
+ |
+#include <boost/fusion/support/iterator_base.hpp> |
+#include <boost/fusion/iterator/detail/advance.hpp> |
+#include <boost/fusion/support/category_of.hpp> |
+#include <boost/type_traits/is_same.hpp> |
+#include <boost/mpl/assert.hpp> |
+ |
+namespace boost { namespace fusion |
+{ |
+ struct iterator_facade_tag; |
+ |
+ template <typename Derived, typename Category> |
+ struct iterator_facade : iterator_base<Derived> |
+ { |
+ typedef iterator_facade_tag fusion_tag; |
+ typedef Derived derived_type; |
+ typedef Category category; |
+ |
+ // default implementation |
+ template <typename I1, typename I2> |
+ struct equal_to // default implementation |
+ : is_same< |
+ typename I1::derived_type |
+ , typename I2::derived_type |
+ > |
+ {}; |
+ |
+ // default implementation |
+ template <typename Iterator, typename N> |
+ struct advance : |
+ mpl::if_c< |
+ (N::value > 0) |
+ , advance_detail::forward<Iterator, N::value> |
+ , advance_detail::backward<Iterator, N::value> |
+ >::type |
+ { |
+ BOOST_MPL_ASSERT_NOT((traits::is_random_access<Iterator>)); |
+ }; |
+ }; |
+}} |
+ |
+#endif |