  /// \fn is_sorted_until ( ForwardIterator first, ForwardIterator last ) /// \return the point in the sequence [first, last) where the elements are unordered ///  /// \param first The start of the sequence to be tested. /// \param last  One past the end of the sequence ///     template <typename ForwardIterator>     ForwardIterator is_sorted_until ( ForwardIterator first, ForwardIterator last )     {         typedef typename std::iterator_traits<ForwardIterator>::value_type value_type;         return boost::algorithm::is_sorted_until ( first, last, std::less<value_type>());     }   /// \fn is_sorted ( ForwardIterator first, ForwardIterator last, Pred p ) /// \return whether or not the entire sequence is sorted ///  /// \param first The start of the sequence to be tested. /// \param last  One past the end of the sequence /// \param p     A binary predicate that returns true if two elements are ordered. ///     template <typename ForwardIterator, typename Pred>     bool is_sorted ( ForwardIterator first, ForwardIterator last, Pred p )     {         return boost::algorithm::is_sorted_until (first, last