namespace boost {
namespace itl {
template<class DomainT ,
ITL_COMPARE Compare = ITL_COMPARE_INSTANCE(std::less, DomainT)>
class interval;
template<class IntervalT > struct continuous_type;
template<class IntervalT > struct discrete_type;
template<class IntervalT > struct continuous_interval;
template<class IntervalT > struct discrete_interval;
template<class IntervalType > struct exclusive_less;
template<class DomainT , ITL_COMPARE Compare>
struct type_to_string<itl::interval< DomainT, Compare >>;
template<class DomainT > struct value_size<itl::interval< DomainT >>;
// Constants for intervalbounds.
enum BoundTypes { open_bounded = 0, left_open = 1, right_open = 2,
closed_bounded = 3 };
typedef unsigned char bound_type;
template<class DomainT , ITL_COMPARE Compare>
bool operator==(const interval< DomainT, Compare > &,
const interval< DomainT, Compare > &);
template<class DomainT , ITL_COMPARE Compare>
bool operator!=(const interval< DomainT, Compare > & lhs,
const interval< DomainT, Compare > & rhs);
template<class DomainT , ITL_COMPARE Compare>
bool operator<(const interval< DomainT, Compare > &,
const interval< DomainT, Compare > &);
template<class DomainT , ITL_COMPARE Compare>
bool operator>(const interval< DomainT, Compare > & lhs,
const interval< DomainT, Compare > & rhs);
template<class DomainT , ITL_COMPARE Compare>
bool operator<=(const interval< DomainT, Compare > & lhs,
const interval< DomainT, Compare > & rhs);
template<class DomainT , ITL_COMPARE Compare>
bool operator>=(const interval< DomainT, Compare > & lhs,
const interval< DomainT, Compare > & rhs);
template<class DomainT , ITL_COMPARE Compare>
interval< DomainT, Compare >
hull(interval< DomainT, Compare >, const interval< DomainT, Compare > &);
template<class DomainT , ITL_COMPARE Compare>
interval< DomainT, Compare >
right_subtract(interval< DomainT, Compare >,
const interval< DomainT, Compare > &);
template<class DomainT , ITL_COMPARE Compare>
interval< DomainT, Compare >
left_subtract(interval< DomainT, Compare >,
const interval< DomainT, Compare > &);
template<class DomainT , ITL_COMPARE Compare>
itl::interval< DomainT, Compare >
operator&(itl::interval< DomainT, Compare >,
const itl::interval< DomainT, Compare > &);
template<class DomainT , ITL_COMPARE Compare>
bool intersects(const itl::interval< DomainT, Compare > &,
const itl::interval< DomainT, Compare > &);
template<class DomainT , ITL_COMPARE Compare>
bool is_disjoint(const itl::interval< DomainT, Compare > &,
const itl::interval< DomainT, Compare > &);
template<class CharType , class CharTraits , class DomainT ,
ITL_COMPARE Compare>
std::basic_ostream< CharType, CharTraits > &
operator<<(std::basic_ostream< CharType, CharTraits > & stream,
interval< DomainT, Compare > const & x);
}
}