
From: Matthew Vogt <mattvogt@warpmail.net>
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 multivalues.zip. 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 library. -- Rob Stewart stewart@sig.com Software Engineer http://www.sig.com Susquehanna International Group, LLP using std::disclaimer;