
Aleksey Gurtovoy wrote:
Do you need any help in writing these?
I'd be happy if the GCC failures went away by themselves :), but given that I'm the only person throughly familiar with the current implementation, I'm afraid it's not cost-effective to ask somebody else to look at them. Unless, of course, they _want_ to get their hands dirty in all the intricacies of the library internals.
I think you can fix these by moving the query functions into the classes. For instance: template< typename T, typename Base > aux::no_tag is_masked_(s_item<T,Base> const&, aux::type_wrapper<T>*); To: template< typename T, typename Base > struct s_item : Base { ... static aux::no_tag is_masked_(aux::type_wrapper<T>*); using Base::is_masked_; }; Etc, for all of them. And of course, change the queries from ( sizeof( BOOST_MPL_AUX_OVERLOAD_IS_MASKED( aux::ptr_to_ref(BOOST_MPL_AUX_STATIC_CAST(Set*, 0)) , BOOST_MPL_AUX_STATIC_CAST(aux::type_wrapper<T>*, 0) ) ) == sizeof(aux::no_tag) ) > to ( sizeof( Set::is_masked_( BOOST_MPL_AUX_STATIC_CAST(aux::type_wrapper<T>*, 0) ) ) == sizeof(aux::no_tag) ) > Etc. For this compiler. This is how NamedParams does these things, and it seems to work. -- Daniel Wallin