namespace boost {
namespace icl {
template<typename DomainT, typename CodomainT,
typename Traits = icl::partial_absorber,
ICL_COMPARE Compare = ICL_COMPARE_INSTANCE(std::less, DomainT),
ICL_COMBINE Combine = ICL_COMBINE_INSTANCE(icl::inplace_plus, CodomainT),
ICL_SECTION Section = ICL_SECTION_INSTANCE(icl::inter_section, CodomainT),
ICL_INTERVAL(ICL_COMPARE) Interval = ICL_INTERVAL_INSTANCE(ICL_INTERVAL_DEFAULT, DomainT, Compare),
ICL_ALLOC Alloc = std::allocator>
class interval_map;
template<typename DomainT, typename CodomainT, typename Traits,
ICL_COMPARE Compare, ICL_COMBINE Combine, ICL_SECTION Section,
ICL_INTERVAL(ICL_COMPARE) Interval, ICL_ALLOC Alloc>
struct is_map<icl::interval_map< DomainT, CodomainT, Traits, Compare, Combine, Section, Interval, Alloc >>;
template<typename DomainT, typename CodomainT, typename Traits,
ICL_COMPARE Compare, ICL_COMBINE Combine, ICL_SECTION Section,
ICL_INTERVAL(ICL_COMPARE) Interval, ICL_ALLOC Alloc>
struct has_inverse<icl::interval_map< DomainT, CodomainT, Traits, Compare, Combine, Section, Interval, Alloc >>;
template<typename DomainT, typename CodomainT, typename Traits,
ICL_COMPARE Compare, ICL_COMBINE Combine, ICL_SECTION Section,
ICL_INTERVAL(ICL_COMPARE) Interval, ICL_ALLOC Alloc>
struct is_interval_container<icl::interval_map< DomainT, CodomainT, Traits, Compare, Combine, Section, Interval, Alloc >>;
template<typename DomainT, typename CodomainT, typename Traits,
ICL_COMPARE Compare, ICL_COMBINE Combine, ICL_SECTION Section,
ICL_INTERVAL(ICL_COMPARE) Interval, ICL_ALLOC Alloc>
struct absorbs_identities<icl::interval_map< DomainT, CodomainT, Traits, Compare, Combine, Section, Interval, Alloc >>;
template<typename DomainT, typename CodomainT, typename Traits,
ICL_COMPARE Compare, ICL_COMBINE Combine, ICL_SECTION Section,
ICL_INTERVAL(ICL_COMPARE) Interval, ICL_ALLOC Alloc>
struct is_total<icl::interval_map< DomainT, CodomainT, Traits, Compare, Combine, Section, Interval, Alloc >>;
template<typename DomainT, typename CodomainT, typename Traits,
ICL_COMPARE Compare, ICL_COMBINE Combine, ICL_SECTION Section,
ICL_INTERVAL(ICL_COMPARE) Interval, ICL_ALLOC Alloc>
struct type_to_string<icl::interval_map< DomainT, CodomainT, Traits, Compare, Combine, Section, Interval, Alloc >>;
}
}