
Rob Stewart wrote:
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
I aggree with it. But each_of is still confusing for me. You implemented it as the negation of all_of: "( all_of( a ) > x ) != ( each_of( x ) > x )" is true for all a and x. each_of in your implementation is equivalent to not_all_of in mine. not_all_of in your implementation is the negation of one_of, what is ok. But each_of( a ) == x means that none or more but not all elements of a are equal to x. There must be a better name as each_of. I had just a quick look on your new implementation. I will post my results later.
This one runs 2016 tests and compiles in just over nine minutes on my system (still GCC 3.2.3). Could you send me the testfiles .cpp or upload them to the sandbox file vault? Then I could help you to complete them. What is about the tests for the relations between the multivalues I sent you?
There are still some things missing:
- tests for some_of, between, and exactly.
I found also relations between expressions with one_of.
- support for user-defined predicates that only know how to compare to values and not multivalues
My implementation (v11) can compare two multivalues (junctions) with user defined predicates. I wrote swap_operands as a function object wrapper, if the rhs-parameter is a multivalue. There is still the problem with lambda-expressions. The only working idea I found to allow the usage of lambda expressions would be to have a function like this: compare( all_of( a ), _1 < _2, any_of( b ) ) But what is about the []-operator? all_of( a ) [ _2 > _1 ] any_of( b ) Then we would have no more problems with operator precendence. :-)
- documentation
I will help you so good I can.
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.
There is a boost-sandbox CVS. Now after we have a common version ( Now it makes no sense develop my prototype further ) this would be a good place for our library. Or is the stage to early? Sincerely Florian