|
Boost : |
Subject: Re: [boost] Assign V2 - first impression
From: er (er.ci.2020_at_[hidden])
Date: 2011-06-23 11:14:00
> The following next example is also IMO convoluted, I've read it multiple
> times but I don't understand what it attempts to do.
>
> std::vector<int> numeric( 10 ); iota( numeric, 0 );
>> typedef std::string str_; typedef variant< int, str_> data_;
>> array<data_, 17> keypad;
>> csv(
>> put( keypad ),
>> "+", "-", "*", "/", "=", ".", "c"
>> ).for_each( numeric );
Call me nitpicky but this example was not meant to illustrate
initialization, which does not come until Conversion in the tutorial.
Therefore, it is not equivalent to your example below:
> Reading the assert macros, I guess this is equivalent?
>
> array<variant<int, std::string>, 17> keypad =
> {
> "+", "-", "*", "/", "=", ".", "c",
> 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
> };
>
The statement that would be equivalent to your statement is :
array<data_, 17> keypad = converter(
csv_deque<data_, 1>(
"+", "-", "*", "/", "=", ".", "c"
).for_each( numeric )
);
or (since you stated a preference for the variadic form):
array<data_, 17> keypad = converter(
deque<data_>
( "+" )( "-" )( "*" )( "/" )( "=" )( "." )( "c" )
.for_each( numeric )
);
Neither of which is as neat as C++0x's initialization list approach, as
already acknowledged in a previous thread. But it's not always supported
and does not help for filling a container either.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk