Header <boost/algorithm/clamp.hpp>

| Home | Libraries | People | FAQ | More

### Header <boost/algorithm/clamp.hpp>

Clamp algorithm.

Marshall Clow

Suggested by olafvdspek in https://svn.boost.org/trac/boost/ticket/3215

    namespace boost {
      namespace algorithm {
        template<typename T, typename Pred>
          T const & clamp(T const &,
                          typename boost::mpl::identity< T >::type const &,
                          typename boost::mpl::identity< T >::type const &, Pred);
        template<typename T>
          T const & clamp(const T &,
                          typename boost::mpl::identity< T >::type const &,
                          typename boost::mpl::identity< T >::type const &);
        template<typename InputIterator, typename OutputIterator>
          OutputIterator
          clamp_range(InputIterator first, InputIterator last, OutputIterator out,
                      typename std::iterator_traits< InputIterator >::value_type const & lo,
                      typename std::iterator_traits< InputIterator >::value_type const & hi);
        template<typename Range, typename OutputIterator>
          boost::disable_if_c< boost::is_same< Range, OutputIterator >::value, OutputIterator >::type
          clamp_range(const Range &, OutputIterator,
                      typename std::iterator_traits< typename boost::range_iterator< const Range >::type >::value_type const &,
                      typename std::iterator_traits< typename boost::range_iterator< const Range >::type >::value_type const &);
        template<typename InputIterator, typename OutputIterator, typename Pred>
          OutputIterator
          clamp_range(InputIterator first, InputIterator last, OutputIterator out,
                      typename std::iterator_traits< InputIterator >::value_type const & lo,
                      typename std::iterator_traits< InputIterator >::value_type const & hi,
                      Pred p);
        template<typename Range, typename OutputIterator, typename Pred>
          boost::disable_if_c< boost::is_same< Range, OutputIterator >::value, OutputIterator >::type
          clamp_range(const Range &, OutputIterator,
                      typename std::iterator_traits< typename boost::range_iterator< const Range >::type >::value_type const &,
                      typename std::iterator_traits< typename boost::range_iterator< const Range >::type >::value_type const &,
                      Pred);
      }
    }