namespace boost {
template<typename ForwardIter>
std::pair< ForwardIter, ForwardIter >
minmax_element(ForwardIter first, ForwardIter last);
template<typename ForwardIter, typename BinaryPredicate>
std::pair< ForwardIter, ForwardIter >
minmax_element(ForwardIter first, ForwardIter last, BinaryPredicate comp);
template<typename ForwardIter>
ForwardIter first_min_element(ForwardIter first, ForwardIter last);
template<typename ForwardIter, typename BinaryPredicate>
ForwardIter first_min_element(ForwardIter first, ForwardIter last,
BinaryPredicate comp);
template<typename ForwardIter>
ForwardIter last_min_element(ForwardIter first, ForwardIter last);
template<typename ForwardIter, typename BinaryPredicate>
ForwardIter last_min_element(ForwardIter first, ForwardIter last,
BinaryPredicate comp);
template<typename ForwardIter>
ForwardIter first_max_element(ForwardIter first, ForwardIter last);
template<typename ForwardIter, typename BinaryPredicate>
ForwardIter first_max_element(ForwardIter first, ForwardIter last,
BinaryPredicate comp);
template<typename ForwardIter>
ForwardIter last_max_element(ForwardIter first, ForwardIter last);
template<typename ForwardIter, typename BinaryPredicate>
ForwardIter last_max_element(ForwardIter first, ForwardIter last,
BinaryPredicate comp);
template<typename ForwardIter>
std::pair< ForwardIter, ForwardIter >
first_min_first_max_element(ForwardIter first, ForwardIter last);
template<typename ForwardIter, typename BinaryPredicate>
std::pair< ForwardIter, ForwardIter >
first_min_first_max_element(ForwardIter first, ForwardIter last,
BinaryPredicate comp);
template<typename ForwardIter>
std::pair< ForwardIter, ForwardIter >
first_min_last_max_element(ForwardIter first, ForwardIter last);
template<typename ForwardIter, typename BinaryPredicate>
std::pair< ForwardIter, ForwardIter >
first_min_last_max_element(ForwardIter first, ForwardIter last,
BinaryPredicate comp);
template<typename ForwardIter>
std::pair< ForwardIter, ForwardIter >
last_min_first_max_element(ForwardIter first, ForwardIter last);
template<typename ForwardIter, typename BinaryPredicate>
std::pair< ForwardIter, ForwardIter >
last_min_first_max_element(ForwardIter first, ForwardIter last,
BinaryPredicate comp);
template<typename ForwardIter>
std::pair< ForwardIter, ForwardIter >
last_min_last_max_element(ForwardIter first, ForwardIter last);
template<typename ForwardIter, typename BinaryPredicate>
std::pair< ForwardIter, ForwardIter >
last_min_last_max_element(ForwardIter first, ForwardIter last,
BinaryPredicate comp);
}