
Hi, I noticed that there is a boost/mpl/set directory with some files in them (CVS from circa one week ago). Is this work-in-progress or can I actually start using it in some way? Do you need any help in writing these? I'm in dire need for a compile time set. Regards, Jaap Suter

Hi Jaap,
I noticed that there is a boost/mpl/set directory with some files in them (CVS from circa one week ago). Is this work-in-progress or can I actually start using it in some way?
The latter. GCC 3.4.1 failures aside (these are on the todo list), it's completely functional. Docs are still in progress, though. I guess at the moment the easiest way to get a feel of the set's interface would be to take a look at its test case -- http://cvs.sourceforge.net/viewcvs.py/*checkout*/boost/boost/libs/mpl/test/s....
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'm in dire need for a compile time set.
It's all yours, then! I'd be happy to hear any feedback you might have on this. -- Aleksey Gurtovoy MetaCommunications Engineering

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

Daniel Wallin writes:
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.
Thanks for the hint, Daniel! That's more or less what I just did. -- Aleksey Gurtovoy MetaCommunications Engineering
participants (3)
-
Aleksey Gurtovoy
-
Daniel Wallin
-
Jaap Suter