~tsarev/boostdc/cmake

« back to all changes in this revision

Viewing changes to boost/boost/mpl/max_element.hpp

  • Committer: bigmuscle
  • Date: 2010-05-08 08:47:15 UTC
  • Revision ID: svn-v4:5fb55d53-692c-0410-a46a-e90ab66e00ee:trunk:497
removed old boost version

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
 
2
 
#ifndef BOOST_MPL_MAX_ELEMENT_HPP_INCLUDED
3
 
#define BOOST_MPL_MAX_ELEMENT_HPP_INCLUDED
4
 
 
5
 
// Copyright Aleksey Gurtovoy 2000-2004
6
 
//
7
 
// Distributed under the Boost Software License, Version 1.0. 
8
 
// (See accompanying file LICENSE_1_0.txt or copy at 
9
 
// http://www.boost.org/LICENSE_1_0.txt)
10
 
//
11
 
// See http://www.boost.org/libs/mpl for documentation.
12
 
 
13
 
// $Id: max_element.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
14
 
// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
15
 
// $Revision: 49267 $
16
 
 
17
 
#include <boost/mpl/less.hpp>
18
 
#include <boost/mpl/iter_fold.hpp>
19
 
#include <boost/mpl/begin_end.hpp>
20
 
#include <boost/mpl/if.hpp>
21
 
#include <boost/mpl/deref.hpp>
22
 
#include <boost/mpl/apply.hpp>
23
 
#include <boost/mpl/aux_/common_name_wknd.hpp>
24
 
#include <boost/mpl/aux_/na_spec.hpp>
25
 
 
26
 
namespace boost { namespace mpl {
27
 
 
28
 
BOOST_MPL_AUX_COMMON_NAME_WKND(max_element)
29
 
 
30
 
namespace aux {
31
 
 
32
 
template< typename Predicate >
33
 
struct select_max
34
 
{
35
 
    template< typename OldIterator, typename Iterator >
36
 
    struct apply
37
 
    {
38
 
        typedef typename apply2<
39
 
              Predicate
40
 
            , typename deref<OldIterator>::type
41
 
            , typename deref<Iterator>::type
42
 
            >::type condition_;
43
 
 
44
 
        typedef typename if_<
45
 
              condition_
46
 
            , Iterator
47
 
            , OldIterator
48
 
            >::type type;
49
 
    };
50
 
};
51
 
 
52
 
} // namespace aux 
53
 
 
54
 
 
55
 
template<
56
 
      typename BOOST_MPL_AUX_NA_PARAM(Sequence)
57
 
    , typename Predicate = less<_,_>
58
 
    >
59
 
struct max_element
60
 
    : iter_fold<
61
 
          Sequence
62
 
        , typename begin<Sequence>::type
63
 
        , protect< aux::select_max<Predicate> >
64
 
        >
65
 
{
66
 
};
67
 
 
68
 
BOOST_MPL_AUX_NA_SPEC(1, max_element)
69
 
 
70
 
}}
71
 
 
72
 
#endif // BOOST_MPL_MAX_ELEMENT_HPP_INCLUDED