ぎりぎりで完成…ドキュメント おかしいところがあれば教えてください たぶんBoost1.36からboost::functionのtemplate parameterからAllocator部分がなくなります
using directiveはどこで使っても安全にならない placeholderなどの名前をまとめてインポートしたいときは、結局using declarationに展開するマクロが必要かもしれない
lazyにおまけでbind関数を変更するためのパラメータ(Bind)を付けて置いたがこれが重要だった Bindにresult_of_lazy::typeを渡すとネストされたlazyな関数を作れる (実装) これで機械的に複雑なlambda式が作れるようになった、かも lvNはbll::protectをN回呼…
数字じゃなくarrayをfile iterationするマクロ…実装とサンプル 実装はBOOST_PP_ITERATEをラップしただけ これでhorizontalなmacroは一掃してしまおう
fuse/unfuseを使ってvariadic functionのエミュレートを試みた…実装 Argsに何を渡すかだが、将来的にはfusion::vector固定でいいと思う FusionSequenceはRangeのようにviewを取り出せる
親のnamespaceが子のnamespaceの型にassociateされてしまう これによってboost::noncopyableを継承する全ての型はboost名前空間にassociateされると思われる
deduceされた配列にconstを付けるとpartial specializationがいっさい効かなくなるvc-7.1のバグの回避策を発見…実装 これでようやくconstと書くことができる 今まではconstの代わりにboost::add_constを関数の宣言のところに書かなければいけなかった
実装とサンプル Boost.Lambdaよりプリプロセッサの分だけコンパイルが遅いという結果になってしまった ネストされたPP_ITERATEではPP_SLOTが必要 Boost.BindとBoost.Lambdaではplaceholderの置換ルールが少し違うみたいである Boost.Bindの方がEBOをしている…
前に作ったこれは、不気味で使う気が起こらない 結局素朴なものに変更した…ソースとサンプル フリー関数のpre/postconditionはボツ
評価版をインストールした 30日以内になんとかしなければならない workaroundはほとんど必要なさそう 以下、バグと思われるもの
v1は格好が悪かった 関数型を使うことにした…実装 result_ofを利用するときは戻り値型にuse_defaultを指定する void test() { namespace bll = boost::lambda; BOOST_CHECK( std::not1( egg::mono<bool(int)>(bll::_1 != 12) ) (12) ); BOOST_CHECK( std::bind1st( egg:</bool(int)>…
これについて こんなのがありました…c_function 一般には、こんな風にvtableを自前で作ったりも出来ます Boost.Functionも自前で作っています もっとすごそうなライブラリ…Boost.Vtable
Visual C++ 2008 Express Edition(英語版)をインストールした Visual C++ 2005 Express Edition(日本語版)と共存できている模様 Visual C++ .NET Version 7.1とも共存できている これは直っている これは直っていない もう直せないのかもしれない 回避策はこ…
1.0だからどうということもないですがリリースしました ドキュメントとダウンロード
ちゃんと名前がついていた…参照 Biscuitは静的な文法のためのPEGパーサ生成器である、ということになった XMLパーサはこんな感じになる Javaによる実装の解説(pdf) C#による実装がcatの実装の中にこっそりある
copy-initializationにおいて、const参照がconstオブジェクトから初期化されるとき、コピーされたオブジェクトで初期化されてしまう (gcc-3.4と4.1で確認) 組み込み型の場合のみらしい 関数の引数のcopy-initializationは大丈夫らしい
いつも使うときに混乱するbind等の定義を試みた
Boost.RangeはBoost1.35で破壊的に変更されるのでまとめます null-terminatedな char const* はRangeではない boost::as_literalでRangeにする charの配列は、\0は考慮されず普通の配列として扱われる つまりboost::size("123")は4を返す null-terminatedと…
スマートポインタを値のように振舞うようにするクラステンプレート 実装は、この辺り (コピーしてnewするだけである) これで、元々"value-based"であるpolyと、スマートポインタを同じように扱えるようにする any_iteratorはこうなった…参照 (content_ofに注…
いくつか実装しました… 実装とドキュメント OutputIteratorはAssignableでないといけない
よく考えると、singleで入力をRangeにしてRange Adaptorに渡せば、OutputIterator Adaptorに変換できる copy(frng|utf8_decoded, outputter(make_utf8_encoded)|=std::back_inserter(v1));
OutputIteratorは実装が簡単なので誰かが作っているはずだがあまり見つからない MultiOut trotter (を拡張したようなライブラリ) 以下のような感じにする予定 copy(file_range<>("data.txt")|utf8_decoded, copier(utf8_encoder|=stream_writer(fout)) |=cop…
boost::is_podはほとんどのコンパイラで動かないようだ 以下のようにすると少なくとも警告が出せる (Comeauやgccなど) Boost.Xpressiveが利用していると思われる inline void pod_check(...) {} struct A {}; struct B : A {}; inline void pod_check_of_AB(…
これはadobeのtype erasureライブラリであるらしい…ドキュメント(されてないけど)と記事(pdf) いわゆるclone_ptrと違ってCopyConstructibleを要求するが、copyにheapを使わないような最適化が出来る 実装を試みた…実装 そのほか気になる記事(pdf) A Language…
関数呼び出しのシンタックスは醜い f(g(h(x)) を f $ g $ h $ x の様な感じに書けるようにしたい これはpipableを逆にしただけなので、何か右結合のoperator overloadをこの実装に追加すればいい Pipableの概念に組み込むのがいいかもしれない これを使ってO…
"range expression"を型をキーにした連想配列にする (実装) iteratorにデータを持たせて、あとで取り出す 使い道はまだ不明
保存していたBoost.Sequenceから拝借 (実装) 早くなったり遅くなったり、使いどころが難しい oven::unrolled_copy_c<7>(b, &a[0]);
OutputIteratorを何でも保持するany_output_iterator (実装) この実装が正しいのかどうか分からない any_iteratorと違うクラスにするのは正しいと思う std::vector<char> v; any_output_iterator<char &> oi(std::back_inserter(v)); std::string src("abcdefg"); std::cop</char></char>…
参照を何でも保持するany_ref (実装) boost::tuple<int, char, std::string> tup(1, 'a', "hello"); BOOST_FOREACH (any_ref a, oven::hetero<any_ref>(tup)) { if (a.type() == typeid(std::string)) { std::string &s = pstade::any_ref_cast<std::string>(a); s = "goodbye"; break; } } BOOST_CHECK( bo</std::string></any_ref></int,>…
使い道があるのか分かりませんが… 大胆な実装 同じ型に変換しないと使えない rectangle r; triangle t; circle c; boost::tuple<rectangle*, triangle*, circle*> tup(&r, &t, &c); BOOST_FOREACH (shape *s, oven::hetero<shape *>(tup)) { s->draw(); }</shape></rectangle*,>