Boost
出力がちょっとだけホモ・サピエンスに優しい scoped enumeration を定義するだけのカンタンなマクロを作ったような気がする. GCC 4.6.1 -std=c++0x で動いたような気もする. #include <iostream> // 第1引数に enumeration の identifier (enum-name) を // 第2引数</iostream>…
Boost.Build において,各ターゲットの種類に対してビルドプロパティの値が具体的にどのようなコマンドラインオプションに対応するかを, Linux + GCC + GNU Linker の環境において例示するという,私以外の誰も得をしないしそもそも他に理解できる人が居る…
以下のコードでやっていることの説明. EXCEPTION_HOOK((expr))と書いておけば, (expr) という C++ の式を実行したら急に例外が来たので……というときに, call stack のようなもので殴られた跡 (この hook が仕掛けられている場所に関する情報) を boost::e…
http://okajima.air-nifty.com/b/2010/01/post-abc6.html 余計なことして遊んでたらマジで制限時間ギリギリの3時間かかってしまった...orz しかも色々はしょっているわ,出力に S, G が出てないわ... A* で discover されなかったノードに対する情報を…
Boost.Asio はもうちょっと↓みたいに(ry
Boost.Asio はもうちょっと↓みたいに proactor な部分で遊ぶのを前面に押し出してほしい気がします的なっていうかこれさっきゆった. 要 Boost 1.36.0 以上.少なくとも Windows Vista 64bit (ただし WIN32 の configuration でビルド) + MSVC 8.0 では動い…
Boost.Asio はもうちょっと↓みたいに proactor な部分で遊ぶのを前面に押し出してほしい気がします的な. 要 Boost 1.36.0 以上.少なくとも Windows Vista 64bit (ただし WIN32 の configuration でビルド) + MSVC 8.0 では動いたような気がする.改行をコ…
Boost の Jamroot でやっていることと http://tinyurl.com/5towdt でやっていることをパクっただけといううわさ.っていうか, http://tinyurl.com/66fv37 でいーじゃーんという声はあーあーあー聞こえない.
Boost 1.35.0 になってビルドの方法が変わってて,単に bjam 動かしただけでは以下の設定しかビルドされにゃい リリースビルドで マルチスレッドで 共有ライブラリで ランタイムを動的リンクする ./configure && make install も同じっぽ? autolink に頼っ…
boost::enable_shared_from_this ,あるいは一般に,単純な参照もしくはポインタによってオブジェクトが与えられたとき,そのオブジェクトへの boost::shared_ptr (共有セマンティクスを持ったスマートポインタ) を得ることができるインタフェイスを提供する…
おいおいおいおい.C++ クックブックの TOC に「Boost.Buildによる複雑なアプリケーションのビルド」とかあるじゃんっ! GNU make よりも先に紹介されてるし!いつの間にそんなに偉くなったんだ Boost.Build!? ちょっと今からアレ買うついでに買ってくるる…
うーんと,日本語で Boost.Build 周りについてまとめてくれてる人って居るのかな?
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2351.htm#creation shared_ptr のファクトリ関数の話で, user-end コードから new が追放されるとか,例外安全の話 (ここで書かれているような問題が発生しないよー) が出てくるのは理解できるん…
どうでもよいけれど Boost.Signal ってなんで boost::weak_ptr を native にサポートしてないの?あの trackable ってクラス定義に intrusive に影響するから使うのを避けられるなら避けるに越したことはないと思うんだけどにゃー.自分で勝手に外側に組めっ…
boost::weak_ptr のメジャーな使い方にキャッシュがあるけれど,単にキャッシュで使うような例示コードはどっかに転がっている気がする (でもさっきぐーぐるせんせにお聞きしたら日本語では転がってないみたいだけど) ので,もう1段 boost::shared_ptr も使…
http://d.hatena.ne.jp/mb2sync/20061205#p1 これ以前導入しようとしたけれども, lambda functor と組み合わせたときに, lambda functor としての operator| か pipable function の operator| かが曖昧になるから回避してたにゃあ.でも,今よくよく考え…
みょみょみょ.あくまで自分向けのメモな段階でのドキュメント. http://cradle.sourceforge.jp/doc/range/iterating.html 一応,暫定で仕上げた take_while と組み合わせて, http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/*checkout*/cradle/cradle/libs…
あ,やっぱ Phoenix ダメじゃん.なんで Phoenix をまともに追ってなかったか思い出した.
だいたい Phoenix でした……orz
っていうかそれは Phoenix ではないのだろうか?
昔っからずっと思っておりましたんですが,ばいんどきらい. bind( plus, _1, 1 );ほらもうきらいきらいだいっきらい.ばいんどしんぢゃえ. plus( _1, 1 );こう書きたい.めがっさ可読性上昇.ほら,こんな書き方ができたら,あなたも今日から初めてみよう…
break - rangeEx にある同名 (ただし過去分詞) なヤツは意味が違うよにぇ. Prelude に対応するものがないけれど rangeEx のヤツのセマンティスクに Prelude 風の名前つけるとしたら takeUnless? concat - lvalueness についてかなり複雑なこと意識する必要…
昨日の話. std::string, std::wstring 以外の std::basic_string の specialization を serialize しようとするとコンパイルに失敗しますよよよ?な話. typedef std::basic_string< unsigned short > String; // String に対して serialize ができないこの…
昼ごろに書いてた同タイトルのエントリー,あれ多分間違ってる. runtime で archive が壊れる.多分 load に失敗してる.っていうか挙動が良く分からなくなった.要再調査.
効率を度外視すれば,内部で UTF-32 に変換 (+実文字列の offset とのマッピングを保持) した上で boost::regex を使うことによって, UTF-8 なり UTF-16 なりの文字列を TR18 の Level 1 の意味で扱える正規表現実装をかなり簡単に書けるような気がしてきた…
#include <cstddef> #include <list> #include <iostream> #include <boost/pool/pool_alloc.hpp> #include <boost/timer.hpp> int main() { int const n = 10000000; boost::timer t; double d = 0.0; { std::list< int, ***** ここを色々取り替える ***** > l; for( int i = 0; i < n; ++i ){ l.push_back( 42 ); //l.p</boost/timer.hpp></boost/pool/pool_alloc.hpp></iostream></list></cstddef>…
副題:最近は (スレッド間で共有されるメモリに対する同期処理としては) セマフォは推奨されていなくて, mutex か, mutex と condition variable の組み合わせを使うことが推奨されている風潮があるんですけどっ!?でもそれに関する具体的な rationale が…
http://thread.gmane.org/gmane.comp.lib.boost.devel/149858/focus=149879 経由で. あは. あはは. あははは. なぜわざわざこんな upgradable mutex なんてもの導入しているかについてはこことかここ参照. upgradable lock を簡単に説明すると「排他的…
http://www.ddj.com/dept/cpp/184403815 これ面白かった.この記事,以前読んだことがあったのだけれど,そのときは記事の前半だけ流し読みしてて「知ってる話っぽいからいーや」とか思って途中で読むのやめてた.しかし,後半が例外安全かつスレッド安全な…
とりあえず,なんか以下のコード片みたいにいろんな Range Adaptor を組み合わせて面白いことできないかな〜的なことを志向する感じで. char const *ans = "0, 1, 2, 3, 4, 5, 6, 7, 8, 9"; assert( range::equal( range::counting( 0, 10 ) // 0, 1, 2, ..…