
Is the documentation under [1] and/or [2] unclear?
It is.
Method 1 provides information I would have expected to find in the SinglePassRange concept. I'm assuming that the member functions and types would be members of any class modeling SinglePassRange. I say "assuming becaus it doesn't actually say that.
Then...why are you assuming that?
Because the documentation says they are member functions but it doesn't say of what type. One has no choice to guess or assume.
I re-read this. Turns out it DOES say that that the member functions correspond to an instance of a type which models SinglePassRange. So my assumption was correct - though unnecessary.
This is also how Boost.Fusion and Boost.MPL (at least) are structured, AFAIK.
I don't think that's accurate. If you want to make your own model of a concept, you just make sure your types implement all the valid expressions.
Maybe in your world. And maybe your world is the correct one. But compare Boost.Fusion's Forward Sequence concept documentation [6] with its extension mechanism documentation [7];
Damn - I didn't realze the fusion had an extention mechanism for Sequence. I don't know if this is necessary or some sort of convenience to help creators "get it right". Previously I made new algorithms just by implementing the relevant concept.
I'm sorry, I'm still not following. Can you be more concrete? I don't know what you mean by building a library "concurrently with the documentation", and I'm not sure what your suggestion about "how to go about these things" actually is.
rsd.com/blincubator.com/advice/
page not found
Lost a character - rrsd.com/blincubator.com/advice/
#include
#include #include struct X { };
namespace boost { int const * begin(X&); int const * end(X&); } // namespace boost
int main(int argc, char* argv[]) { X x; //boost::find(x, 0); // compiler error boost::range::find(x, 0); // compiler error return 0; } --------
Same error comes up as in a BOOST_CONCEPT_ASSERT, pointing to a line referencing range_const_iterator and range_mutable_iterator, suggesting that Boost.Range cannot associate an iterator type with X.
I compiled this example on both MSVC 9.0 and GCC 4.5.3 Failed to compile on MSVC Compiled with no error on GCC. BTW - my view is that it SHOULD compile without error since struct X fullfills the requirements of the SinglePassConcept as written in the documentation. I think my original question was motivated by the fact that it didn't compile with my MSVC system. Of course I forget now. Robert Ramey