namespace boost {
namespace icl {
template<typename Combiner> struct conversion;
template<typename Type> struct identity_based_inplace_combine;
template<typename Type> struct inplace_bit_add;
template<typename Type> struct inplace_bit_and;
template<typename Type> struct inplace_bit_subtract;
template<typename Type> struct inplace_bit_xor;
template<typename Type> struct inplace_caret;
template<typename Type> struct inplace_erase;
template<typename Type> struct inplace_erasure;
template<typename Type> struct inplace_et;
template<typename Type> struct inplace_identity;
template<typename Type> struct inplace_insert;
template<typename Type> struct inplace_max;
template<typename Type> struct inplace_min;
template<typename Type> struct inplace_minus;
template<typename Type> struct inplace_plus;
template<typename Type> struct inplace_slash;
template<typename Type> struct inplace_star;
template<typename Type> struct inter_section;
template<typename Functor> struct inverse;
template<typename Type> struct inverse<icl::inplace_bit_add< Type >>;
template<typename Type> struct inverse<icl::inplace_bit_and< Type >>;
template<typename Type> struct inverse<icl::inplace_bit_subtract< Type >>;
template<typename Type> struct inverse<icl::inplace_bit_xor< Type >>;
template<typename Type> struct inverse<icl::inplace_caret< Type >>;
template<typename Type> struct inverse<icl::inplace_et< Type >>;
template<typename Type> struct inverse<icl::inplace_identity< Type >>;
template<typename Type> struct inverse<icl::inplace_max< Type >>;
template<typename Type> struct inverse<icl::inplace_min< Type >>;
template<typename Type> struct inverse<icl::inplace_minus< Type >>;
template<typename Type> struct inverse<icl::inplace_plus< Type >>;
template<typename Type> struct inverse<icl::inplace_slash< Type >>;
template<typename Type> struct inverse<icl::inplace_star< Type >>;
template<typename Type> struct inverse<icl::inter_section< Type >>;
template<typename Functor> struct is_negative;
template<typename Type>
struct is_negative<icl::inplace_bit_subtract< Type >>;
template<typename Type> struct is_negative<icl::inplace_minus< Type >>;
template<typename Type> struct unit_element_based_inplace_combine;
template<typename Combiner> struct version;
template<> struct version<icl::inplace_minus< double >>;
template<> struct version<icl::inplace_minus< float >>;
template<> struct version<icl::inplace_minus< int >>;
template<> struct version<icl::inplace_minus< long >>;
template<> struct version<icl::inplace_minus< long double >>;
template<> struct version<icl::inplace_minus< long long >>;
template<> struct version<icl::inplace_minus< short >>;
template<typename Type> struct version<icl::inplace_minus< Type >>;
}
}