1 /*=============================================================================
2     Copyright (c) 1999-2003 Jaakko Jarvi
3     Copyright (c) 2001-2011 Joel de Guzman
4 
5     Distributed under the Boost Software License, Version 1.0. (See accompanying
6     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7 ==============================================================================*/
8 #if !defined(FUSION_GREATER_05052005_0432)
9 #define FUSION_GREATER_05052005_0432
10 
11 #include <boost/fusion/support/config.hpp>
12 #include <boost/fusion/sequence/intrinsic/begin.hpp>
13 #include <boost/fusion/sequence/intrinsic/end.hpp>
14 #include <boost/fusion/sequence/intrinsic/size.hpp>
15 #include <boost/fusion/sequence/comparison/enable_comparison.hpp>
16 
17 #if defined(FUSION_DIRECT_OPERATOR_USAGE)
18 #include <boost/fusion/sequence/comparison/detail/greater.hpp>
19 #else
20 #include <boost/fusion/sequence/comparison/less.hpp>
21 #endif
22 
23 namespace boost { namespace fusion
24 {
25     template <typename Seq1, typename Seq2>
26     BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
27     inline bool
greater(Seq1 const & a,Seq2 const & b)28     greater(Seq1 const& a, Seq2 const& b)
29     {
30 #if defined(FUSION_DIRECT_OPERATOR_USAGE)
31         return detail::sequence_greater<Seq1 const, Seq2 const>::
32             call(fusion::begin(a), fusion::begin(b));
33 #else
34         return (b < a);
35 #endif
36     }
37 
38     namespace operators
39     {
40         template <typename Seq1, typename Seq2>
41         BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
42         inline typename
43             boost::enable_if<
44                 traits::enable_comparison<Seq1, Seq2>
45               , bool
46             >::type
operator >(Seq1 const & a,Seq2 const & b)47         operator>(Seq1 const& a, Seq2 const& b)
48         {
49             return fusion::greater(a, b);
50         }
51     }
52     using operators::operator>;
53 }}
54 
55 #endif
56