Rangeライブラリの強化

http://lists.boost.org/MailArchives/boost/msg74311.php
(boost.devel 2004/11/08~)
キタ━━━━━━(゜∀゜)━━━━━━ !!!!!

Here's a taste:
for ( crange r(some_array); r; ++r)
do_something( *r, some_data);

キタ━━━━━━━(;゜∀゜)=3━━━━━━!!!

Also, the library provides wrappers for all STL algorithms (for the purpose of STL algorithms, all containers are ranges as well):
typedef std::vector word_array;
word_array v;
// STL version
std::copy( v.begin(), v.end(), print);
// rng:: version
rng::copy( v, print);

キタ━━━━(Д゜(○=(゜∀゜)=○)Д゜)━━━━━!!!!

Also, the counterparts for STL algorithms that return an iterator will return a range, allowing for:
// fill a vector with all the indexes at which a certain string is found
std::string str = "I'm a cool programmer, really cool that is", find = "cool";
std::vector result;
crange r(str);
while ( r = rng::search(r, find))
result.push_back ( r.begin() - str.begin() );

キタ━━━━(゜Д(○=(*´Д`*)=○)Д゜)━━━━━!!!!

And it provides for range adaptors, allowing for composition.
bool from_ro(const employee & e) { return e.country == "Romania"; }
std::string get_empl_name(const employee &e) { return e.name; }

typedef std::vector array;
array empls;

// take all employees from Romania, and print their names
rng::copy( transformed( filtered(empls,from_ro), get_empl_name),
std::ostream_iterator(std::cout," "));

キタキタキタキタ━━━(゜∀゜≡(゜∀゜≡゜∀゜)≡゜∀゜)━━━━!!!!!!!!!!
ヤヴァいです.ヤヴァすぎです.
特に最後のなんて,アダプタを重ねてアルゴリズム1文だけで全てを完結させる,まさに自分が夢見ていた世界そのものっ!!
これが見えていたからこそ,このrangeライブラリの強化をどれほど待ち望んでいたことか・・・。・゜・(ノД`)・゜・。うぅうぅ.
http://d.hatena.ne.jp/Cryolite/20040522#p4とかhttp://d.hatena.ne.jp/Cryolite/20040821#p2参考)
あぁ,もう!(;´Д`)ハァハァどころの騒ぎじゃねぇ!鼻血が,鼻血が,鼻血があぁ!!
( ´_ゝ`)<ちぅか落ち着け,自分