1 /*=============================================================================
2     Copyright (c) 2011 Eric Niebler
3 
4     Distributed under the Boost Software License, Version 1.0. (See accompanying
5     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 ==============================================================================*/
7 #if !defined(BOOST_FUSION_SEGMENTED_ITERATOR_EQUAL_TO_HPP_INCLUDED)
8 #define BOOST_FUSION_SEGMENTED_ITERATOR_EQUAL_TO_HPP_INCLUDED
9 
10 #include <boost/fusion/support/config.hpp>
11 #include <boost/mpl/and.hpp>
12 #include <boost/mpl/bool.hpp>
13 #include <boost/fusion/iterator/equal_to.hpp>
14 
15 namespace boost { namespace fusion
16 {
17     struct nil_;
18 
19     namespace detail
20     {
21         template <typename Stack1, typename Stack2>
22         struct segmented_equal_to
23           : mpl::and_<
24                 segmented_equal_to<
25                     typename Stack1::cdr_type,
26                     typename Stack2::cdr_type
27                 >
28               , result_of::equal_to<
29                     typename Stack1::car_type::begin_type,
30                     typename Stack2::car_type::begin_type
31                 >
32             >
33         {};
34 
35         template <>
36         struct segmented_equal_to<fusion::nil_, fusion::nil_>
37           : mpl::true_
38         {};
39     }
40 }}
41 
42 #endif
43