Boost logo

Boost :

From: Rob Stewart (stewart_at_[hidden])
Date: 2005-08-09 22:19:29

From: Matthew Vogt <mattvogt_at_[hidden]>
> Matthew Vogt wrote:
> > How about 'subrange_of'?
> Actually, scratch that; it doesn't sound right. It *is* a subset you're
> finding, albeit with extra constraints. Maybe 'bounded_subset_of'?
> I like the 'between' formulation in your other post.

I've uploaded yet another revision of I decided
to go with "some" for n_m/subrange/subset/i_j/a_z/x_y/etc.

New features:

 - some_values/some_of:

   if (some_of(3, 5, r) > 3) ... // at least 3 and less than 6 > 3

   (I selected the argument order shown because "some" precedes
   "of" and "values" and so it rather suggests that the minimum
   and maximum should precede the range.

 - implementing n_of/n_values and one_of/one_value in terms of
   some* which should reduce template instantiations

 - some_of/some_values (formerly n_m_of/n_m_values) and
   n_of/n_values are now implemented using data members for the
   minimum and maximum count to reduce template instantiations
   and to support between and exactly
 - adds between

   if (between(3, 5).items_of(r) > 3) ...

 - adds exactly

   if (exactly(3).items_of(r) > 3) ...

 - all of the above work with pairs of iterators, too (no need to
   use boost::make_iterator_range())

 - separated code into distinct headers plus one multivalues.hpp
   to suck in everything

 - added detail subdirectory

This one runs 2016 tests and compiles in just over nine minutes
on my system (still GCC 3.2.3).

There are still some things missing:

 - tests for some_of, between, and exactly.

 - support for user-defined predicates that only know how to
   compare to values and not multivalues

 - documentation

If there is reasonable consensus for what we have thus far, among
those interested in this library, I think we should start to work
on some documentation so more people will take a look at the

Rob Stewart                           stewart_at_[hidden]
Software Engineer           
Susquehanna International Group, LLP  using std::disclaimer;

Boost list run by bdawes at, gregod at, cpdaniel at, john at