creduce 2.5.0 18e04be Linux cookie 4.13.0-37-generic #42~16.04.1-Ubuntu SMP Wed Mar 7 16:03:28 UTC 2018 x86_64
*************************************************** pass_clang::template-non-type-arg-to-int has encountered a bug: pass failed to modify the variant Please consider tarring up /home/ian/projects/debian/a-boost1.58/boost1.58-1.58.0+dfsg/creduce_bug_001 and mailing it to creduce-bugs@flux.utah.edu and we will try to fix the bug. This bug is not fatal, C-Reduce will continue to execute. ***************************************************
struct iterator_traits ; template<typename _Iterator, typename _Container> class __normal_iterator { }; ; extern "C++" class exception { }; template<typename _Tp> class new_allocator { public: typedef int* pointer; }; template<typename _Tp> class allocator: public new_allocator<int> { public: template<typename _Tp1> struct rebind { typedef allocator other; }; }; template<typename _Arg1, typename _Arg2, typename _Result> struct binary_function ; ; template<typename _Alloc> struct __alloc_traits { typedef int pointer; template<typename _Tp> struct rebind { typedef int other; }; }; template<typename _CharT, typename _Traits, typename _Alloc> class Trans_NS___cxx11_basic_string ; ; __extension__ namespace mpl_ { } namespace mpl { using namespace mpl_; } namespace mpl_ { } namespace mpl { } class locale { class facet; }; class locale::facet { }; template<typename _CharT> class Trans_NS___cxx11_numpunct : public locale::facet { }; struct nil_t ; namespace mpl_ { template< bool C_ > struct bool_; template< bool C_ > struct bool_ ; template< typename T, T N > struct integral_c { }; } template <class T, int val> struct integral_constant : public mpl::integral_c<int, val> { }; template< typename T > struct is_arithmetic_impl ; template< typename T > struct is_arithmetic : public ::integral_constant<bool,::is_arithmetic_impl<T>::value> { public: }; template< typename T, typename U > struct is_same : public ::integral_constant<bool,false> { public: }; template <class T> struct rvalue_ref_filter_rem_cv ; template< typename T > struct remove_cv ; struct is_pointer_impl ; struct error_info_injector: public exception { }; template <typename T> struct alignment_of; template <typename T> struct alignment_of ; template< typename T > struct is_void : public ::integral_constant<bool,false> { public: }; struct void_; struct na ; namespace mpl { template< typename T = na , typename Tag = void_ > struct lambda; template< bool C , typename T1 , typename T2 > struct if_c ; template< typename T1 = na , typename T2 = na , typename T3 = na > struct if_ ; } namespace mpl { template< typename C = na , typename F1 = na > struct eval_if ; } template <typename B, typename D> struct is_base_and_derived_impl ; template< typename Base, typename Derived > struct is_base_and_derived : public ::integral_constant<bool,::is_base_and_derived_impl<int,Derived>::value> { public: }; namespace mpl { } template<class OptionalPointee> struct less_pointees_t : binary_function<OptionalPointee,OptionalPointee,bool> { }; class aligned_storage ; template <typename T> struct no_base ; template <typename DerivedT, typename BaseT = no_base<DerivedT> > struct safe_bool : BaseT { }; struct or_impl ; template< typename T1 = na > struct or_ ; template <class T> struct is_abstract_imp ; template< typename T > struct is_abstract : public ::integral_constant<bool,::is_abstract_imp<T>::value> { public: }; struct is_convertible_impl ; template <bool trivial1, bool trivial2, bool abstract_target> struct is_convertible_impl_select ; template <typename From, typename To> struct is_convertible_impl_dispatch_base ; template <typename From, typename To> struct is_convertible_impl_dispatch ; template< typename From, typename To > struct is_convertible : public ::integral_constant<bool,::is_convertible_impl_dispatch<int,To>::value> { public: }; template <typename T = nil_t> class match : public safe_bool<match<T> > { }; struct action_policy; template < typename ActionPolicyT = action_policy> class scanner; template <typename MatchPolicyT, typename T> struct match_result ; template <typename DerivedT> struct parser { }; struct get_param ; template < typename DerivedT , typename EmbedT , typename T0 = nil_t , typename T1 = nil_t > class rule_base; template < typename T0 = nil_t , typename T1 = nil_t , typename T2 = nil_t > class rule { typedef rule self_t; typedef int base_t; }; template <typename CharT> class basic_chset; template< class T > struct sp_member_access { typedef basic_chset<wchar_t> * type; }; template<class T> class shared_ptr { public: template<class Y> explicit shared_ptr( Y * p ) ; typename sp_member_access< int >::type operator-> () const ; }; template <typename DerivedT> struct char_parser : public parser<int> { template <typename ScannerT> struct result ; }; template<typename _Tp, typename _Alloc> struct _Vector_base { typedef int pointer; }; template<typename _Tp, typename _Alloc = allocator<_Tp> > class vector : protected _Vector_base<_Tp, int> { typedef _Vector_base<_Tp, int> _Base; public: typedef _Tp value_type; typedef __normal_iterator<_Tp, int> iterator; iterator insert(iterator __position, const value_type& __x); void _M_insert_aux( const value_type& __x); }; template<typename _Tp, typename _Alloc> typename vector<_Tp, _Alloc>::iterator vector<_Tp, _Alloc>:: insert(iterator __position, const value_type& __x) { _M_insert_aux( __x); } template<typename _Tp, typename _Alloc> void vector<_Tp, _Alloc>:: _M_insert_aux( const _Tp& __x) { } template <typename CharT> struct range { range(int first, int last); }; template <typename CharT> class range_run { public: typedef range<CharT> range_t; typedef vector<range_t> run_t; void set(range_t const& r); run_t run; }; enum float_round_style { }; struct __numeric_limits_base { static const int digits = 0; }; template<typename _Tp> struct numeric_limits : public __numeric_limits_base { }; template <typename CharT> void range_run<CharT>::set(range<CharT> const& r) { typename run_t::iterator iter = run.insert(iter, r); } template <typename CharT> class basic_chset { public: void set(CharT c); private: range_run<CharT> rr; }; template <typename CharT> inline void basic_chset<CharT>::set(CharT c) { rr.set(range<CharT>(c, c)); } template <typename CharT = char> class chset: public char_parser<int > { public: explicit chset(CharT arg_); shared_ptr<basic_chset<CharT> > ptr; }; wchar_t chset_p_ch; inline chset<wchar_t> chset_p(void) { return chset<wchar_t>(chset_p_ch); } template <typename CharT> inline chset<CharT>::chset(CharT arg_) : ptr(new basic_chset<CharT>) { ptr->set(arg_); } template<class T> class integer_traits : public numeric_limits<int> { }; template<class T, int min_val, int max_val> class integer_traits_base { static const int const_max = max_val; }; template<> class integer_traits<unsigned char> : public numeric_limits<unsigned char>, public integer_traits_base<unsigned char, 0, 0x7f * 2 + 1> { }; struct basic_traits; template<class T> struct implementation_level_impl ; template<class T> struct implementation_level : public implementation_level_impl<const T> { }; namespace mpl { template< typename SourceTag, typename TargetTag > struct numeric_cast ; } namespace mpl { template< typename T > struct type_wrapper ; typedef char (&yes_tag)[2]; ; template< typename F, typename T1 > struct apply_wrap1 ; template< typename F, typename T1, typename T2 > struct apply_wrap2 ; template< typename F, typename T1, typename T2, typename T3, typename T4 > struct apply_wrap5 ; } namespace mpl { template< typename F , typename Tag1 , typename Tag2 > struct cast1st_impl ; template< typename F , typename Tag1 , typename Tag2 > struct cast2nd_impl ; } namespace mpl { template< typename Tag1 , typename Tag2 > struct equal_to_impl : if_c< Tag1::value , cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, int > , cast1st_impl< equal_to_impl< int,int >,Tag1, int > >::type { typedef scanner< > scanner_t; }; } template <typename T> struct is_empty_impl ; template< typename T > struct is_empty : public ::integral_constant<bool,::is_empty_impl<T>::value> { public: }; template <class T1, class T2, bool IsSame, bool FirstEmpty, bool SecondEmpty> struct compressed_pair_switch; template <class T1, class T2, int Version> class compressed_pair_imp; template <class T1, class T2> class compressed_pair_imp<T1, T2, 0> ; template <class T1, class T2> class compressed_pair : private ::compressed_pair_imp<T1, T2, ::compressed_pair_switch< T1, T2, ::is_same<typename remove_cv<T1>::type, typename remove_cv<T2>::type>::value, ::is_empty<T1>::value, ::is_empty<T2>::value>::value> { typedef T1 base; }; template <class T> class compressed_pair<T, T> : private compressed_pair_imp<T, T, ::compressed_pair_switch< T, T, ::is_same<typename remove_cv<T>::type, typename remove_cv<T>::type>::value, ::is_empty<T>::value, ::is_empty<T>::value>::value> { typedef compressed_pair_imp<T, T, ::compressed_pair_switch< T, T, ::is_same<typename remove_cv<T>::type, typename remove_cv<T>::type>::value, ::is_empty<T>::value, ::is_empty<T>::value>::value> base; }; template <typename S, typename BaseT> class unary : public BaseT { }; template <typename T> struct ureal_parser_policies; template <typename T> struct real_parser_policies : public ureal_parser_policies<T> { }; ; template< int Category > struct int_least_helper ; template <int Bits> struct exact_signed_base_helper; template< int Bits > struct int_t : public exact_signed_base_helper<Bits> { typedef typename int_least_helper < Bits <= 0 >::least least; }; template< long long MaxValue > struct int_max_value_t ; template<typename Signature> class function; struct function_buffer ; struct function_ptr_tag ; struct function_obj_tag ; struct function_obj_ref_tag ; struct function_allows_small_object_optimization ; template< typename FunctionPtr, typename R > struct function_invoker0 ; template< typename FunctionPtr, typename R > struct void_function_invoker0 ; template< typename FunctionObj, typename R > struct function_obj_invoker0 ; template< typename FunctionObj, typename R > struct void_function_obj_invoker0 ; template< typename FunctionObj, typename R > struct function_ref_invoker0 ; template< typename FunctionObj, typename R > struct void_function_ref_invoker0 ; template< typename FunctionPtr, typename R > struct get_function_invoker0 ; template< typename FunctionObj, typename R > struct get_function_obj_invoker0 ; template< typename FunctionObj, typename R > struct get_function_ref_invoker0 ; template<typename Tag> struct get_invoker0 ; template<> struct get_invoker0<function_ptr_tag> ; template<> struct get_invoker0<function_obj_tag> ; template<> struct get_invoker0<function_obj_ref_tag> ; template< typename T0 > struct function_invoker1 ; template< typename T0 > struct void_function_invoker1 ; template< typename T0 > struct function_obj_invoker1 ; template< typename T0 > struct void_function_obj_invoker1 ; template< typename FunctionPtr, typename R , typename T0 , typename T1 > struct function_invoker2 ; template< typename FunctionPtr, typename R , typename T0 , typename T1 > struct void_function_invoker2 ; template< typename FunctionObj, typename R , typename T0 , typename T1 > struct function_ref_invoker2 ; template< typename FunctionObj, typename R , typename T0 , typename T1 > struct void_function_ref_invoker2 ; template< typename MemberPtr, typename R , typename T0 , typename T1 > struct function_mem_invoker2 ; template< typename MemberPtr, typename R , typename T0 , typename T1 > struct function_void_mem_invoker2 ; template< typename FunctionPtr, typename R , typename T0 , typename T1 > struct get_function_invoker2 ; template< typename FunctionObj, typename R , typename T0 , typename T1 > struct get_function_ref_invoker2 ; template< typename MemberPtr, typename R , typename T0 , typename T1 > struct get_member_invoker2 ; template<typename Tag> struct get_invoker2 ; template<> struct get_invoker2<function_ptr_tag> ; template< typename FunctionPtr, typename R , typename T0 , typename T1 , typename T2 > struct function_invoker3 ; template< typename FunctionPtr, typename R , typename T0 , typename T1 , typename T2 > struct void_function_invoker3 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 > struct function_obj_invoker3 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 > struct void_function_obj_invoker3 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 > struct function_ref_invoker3 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 > struct void_function_ref_invoker3 ; template< typename MemberPtr, typename R , typename T0 , typename T1 , typename T2 > struct function_mem_invoker3 ; template< typename MemberPtr, typename R , typename T0 , typename T1 , typename T2 > struct function_void_mem_invoker3 ; template< typename FunctionPtr, typename R , typename T0 , typename T1 , typename T2 > struct get_function_invoker3 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 > struct get_function_obj_invoker3 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 > struct get_function_ref_invoker3 ; template< typename MemberPtr, typename R , typename T0 , typename T1 , typename T2 > struct get_member_invoker3 ; template<typename Tag> struct get_invoker3 ; template<> struct get_invoker3<function_ptr_tag> ; template< typename R , typename T0 , typename T1 , typename T2> class function<R ( T0 , T1 , T2)> ; template< typename FunctionPtr, typename R , typename T0 , typename T1 , typename T2 , typename T3 > struct function_invoker4 ; template< typename FunctionPtr, typename R , typename T0 , typename T1 , typename T2 , typename T3 > struct void_function_invoker4 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 , typename T3 > struct function_obj_invoker4 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 , typename T3 > struct void_function_obj_invoker4 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 , typename T3 > struct function_ref_invoker4 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 , typename T3 > struct void_function_ref_invoker4 ; template< typename MemberPtr, typename R , typename T0 , typename T1 , typename T2 , typename T3 > struct function_mem_invoker4 ; template< typename MemberPtr, typename R , typename T0 , typename T1 , typename T2 , typename T3 > struct function_void_mem_invoker4 ; template< typename FunctionPtr, typename R , typename T0 , typename T1 , typename T2 , typename T3 > struct get_function_invoker4 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 , typename T3 > struct get_function_obj_invoker4 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 , typename T3 > struct get_function_ref_invoker4 ; template< typename MemberPtr, typename R , typename T0 , typename T1 , typename T2 , typename T3 > struct get_member_invoker4 ; template<typename Tag> struct get_invoker4 ; template<> struct get_invoker4<function_ptr_tag> ; template< typename FunctionPtr, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 > struct function_invoker5 ; template< typename FunctionPtr, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 > struct void_function_invoker5 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 > struct function_obj_invoker5 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 > struct void_function_obj_invoker5 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 > struct function_ref_invoker5 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 > struct void_function_ref_invoker5 ; template< typename MemberPtr, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 > struct function_mem_invoker5 ; template< typename MemberPtr, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 > struct function_void_mem_invoker5 ; template< typename FunctionPtr, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 > struct get_function_invoker5 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 > struct get_function_obj_invoker5 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 > struct get_function_ref_invoker5 ; template< typename MemberPtr, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 > struct get_member_invoker5 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > struct function_obj_invoker6 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > struct void_function_obj_invoker6 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > struct function_ref_invoker6 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > struct void_function_ref_invoker6 ; template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > struct function_mem_invoker6 ; template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > struct function_void_mem_invoker6 ; template< typename FunctionPtr, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > struct get_function_invoker6 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > struct get_function_obj_invoker6 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > struct get_function_ref_invoker6 ; template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > struct get_member_invoker6 ; template<typename Tag> struct get_invoker6 ; template<> struct get_invoker6<function_ptr_tag> ; template<> struct get_invoker6<function_obj_tag> ; template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 > struct void_function_obj_invoker8 ; template< typename FunctionPtr, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 > struct function_invoker9 ; template< typename FunctionPtr, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 > struct void_function_invoker9 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 > struct function_obj_invoker9 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 > struct void_function_obj_invoker9 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 > struct function_ref_invoker9 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 > struct void_function_ref_invoker9 ; template< typename MemberPtr, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 > struct function_mem_invoker9 ; template< typename MemberPtr, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 > struct function_void_mem_invoker9 ; template< typename FunctionPtr, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 > struct get_function_invoker9 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 > struct get_function_obj_invoker9 ; template< typename FunctionObj, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 > struct get_function_ref_invoker9 ; template< typename MemberPtr, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 > struct get_member_invoker9 ; template<typename Tag> struct get_invoker9 ; template<> struct get_invoker9<function_obj_ref_tag> ; template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8> class function<R ( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)> ; template< typename FunctionPtr, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 > struct function_invoker10 ; template< typename FunctionPtr, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 > struct void_function_invoker10 ; template< typename FunctionPtr, typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 > struct get_function_invoker10 ; class time_base { }; template<typename _CharT, typename _InIter> class Trans_NS___cxx11_time_get : public locale::facet, public time_base { }; struct bidirectional_traversal_tag ; struct random_access_traversal_tag ; struct old_category_to_traversal ; template <class Cat> struct iterator_category_to_traversal ; template <typename A, typename B> struct is_interoperable ; namespace mpl { template< typename T1 = na > struct and_ ; } template <class Cond, class Return> struct enable_if ; namespace mpl { template< typename F, typename T1 = na, typename T2 = na, typename T3 = na , typename T4 = na, typename T5 = na > struct bind; template< typename T = na > struct protect : T { }; template< typename T, typename U1, typename U2, typename U3, typename U4 , typename U5 > struct resolve_bind_arg ; template< typename F > struct bind0 ; template< typename F, typename U1, typename U2, typename U3, typename U4 , typename U5 > struct resolve_bind_arg ; template< typename F > struct bind< F,na,na,na,na,na > ; template< typename F, typename T1 > struct bind1 ; template< typename F, typename T1, typename U1, typename U2, typename U3 , typename U4, typename U5 > struct resolve_bind_arg< bind1< F,T1 >, U1, U2, U3, U4, U5 > ; ; template< typename F, typename T1, typename T2, typename T3 > struct bind3 ; template< typename F, typename T1, typename T2, typename T3, typename T4 > struct bind4 ; template< typename F, typename T1, typename T2, typename T3, typename T4 , typename U1, typename U2, typename U3, typename U4, typename U5 > struct resolve_bind_arg< bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5 > ; ; template< typename F, typename T1, typename T2, typename T3, typename T4 > struct bind5 ; } namespace mpl { template< typename T, typename fallback_ = mpl::bool_<true> > struct has_type ; } namespace mpl { template< typename T, bool has_type_ > struct quote_impl ; template< template< typename P1 > class F , typename Tag = void_ > struct quote1 ; template< typename F , typename Tag > struct lambda ; template< typename IsLE, typename Tag , template< typename P1 > class F , typename L1 > struct le_result1 ; template< typename Tag , template< typename P1 > class F , typename L1 > struct le_result1< bool_<true>,Tag,F,L1 > ; template< template< typename P1, typename P2, typename P3 > class F , typename T1, typename T2, typename T3 , typename Tag > struct lambda< F< T1,T2,T3 > , Tag > ; template< typename F, typename T1, typename T2, typename T3 , typename Tag > struct lambda< bind3< F,T1,T2,T3 > , Tag > ; template< typename F, typename T1, typename T2, typename T3, typename T4 , typename T5 , typename Tag > struct lambda< bind< F,T1,T2,T3,T4,T5 > , Tag > ; } template< typename CategoryOrTraversal, typename Required > struct is_traversal_at_least : public is_convertible< typename iterator_category_to_traversal< CategoryOrTraversal >::type, int > {}; template < class Facade1 , class Facade2 , class Return > struct enable_if_interoperable : public enable_if< is_interoperable< int, int > , Return > {}; template < class Facade1 , class Return , class CategoryOrTraversal , class Reference , class Difference , bool IsBidirectionalTraversal , bool IsRandomAccessTraversal > class iterator_facade_base; template < class Derived , class Value , class CategoryOrTraversal , class Reference , class Difference > class iterator_facade_base< Derived, Value, CategoryOrTraversal, Reference, Difference, false, false > ; template < class Derived , class Value , class CategoryOrTraversal , class Reference , class Difference > class iterator_facade_base< Derived, Value, CategoryOrTraversal, Reference, Difference, true, true > : public iterator_facade_base< Derived, Value, CategoryOrTraversal, Reference, Difference, true, false > { }; template < class Derived , class Value , class CategoryOrTraversal , class Reference = int& , class Difference = long > class iterator_facade : public iterator_facade_base< int, int, CategoryOrTraversal, int, int, is_traversal_at_least< CategoryOrTraversal, int >::value, is_traversal_at_least< CategoryOrTraversal, int >::value > { }; template <class T, class DefaultNullaryFn> struct ia_dflt_help ; template < class Derived , class Value , class Reference > struct iterator_adaptor_base ; struct iterator_pointee ;