Boost logo

Boost :

Subject: Re: [boost] Assign V2 - first impression
From: er ([hidden])
Date: 2011-06-22 16:31:49

> Why is operator | used at all, if there are two separate functions? It
> doesn't look compelling to me and I'm perfectly fine with separating my
> statements, one for the assign part and one for the for_each part. In fact,
> the first example from the documentation would benefit from doing that,
> since it would be much more readable.
> cal | do_csv_put<2>( "jan", 31, "feb", 28, "mar", 31 );
> boost::for_each(cal, long-lambda-expression..)

v2 doesn't stop you from separating your statements like this:

csv_put( cal, "jan", 31, "feb", 28, "mar", 31 );
boost::for_each(cal, long-lambda-expression..);

You may ignore operator| altogether, but since it achieves something
comparable (not identical) to boost adaptors, which also use the
operator| syntax, it enhances coherence.

> Additional features include:
>> Options for overriding default semantics, and macros to create custom
>> options
> What are the default semantics?

Please do a search for semantics in the tutorial:

>> A functor analogue of csv_put, put, for constructing a sequence of elements
>> from variadic argument lists
>> Two functions, csv_deque<> and deque<>, which are the analogues of those
>> just described, but which generate a container.
> You lost me here. I needed to read those sentences a few time before I think
> I understand what you mean.

Indeed, the intro merly skims the surface...

>> Chaining ranges, with special consideration for those created using the ref
>> functionalty (below)
> I don't know what the docs are talking about at this point. Chaining ranges
> in the assign library? That sounds to the uneducated mind like a job for
> boost.range

It probably straddles both. As stated above, it adresses a particular
need that arises from using csv_array. Please see the tutorial under
Reference Array and Chaining.

>> Conversion from ranges to containers
> This sentence doesn't make sence to me. std::container(range.begin(),
> range.end()) is supported by all containers.

Please see Conversion in the tutorial. The first sentence gives it away:

This section deals with conversion from a Range to collections of
elements that need not (but may) support iterators.

>> A framework, whose identifiers are in namespace ref, for generating an
>> array of reference wrappers, for short, a reference-array.
> I do not understand this part. What kind of container are we attempting to
> populate here?

Please see the tutorial under Reference Array.

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