Boost

Defining Scoped Enumerations with Human-readable Outputs

出力がちょっとだけホモ・サピエンスに優しい scoped enumeration を定義するだけのカンタンなマクロを作ったような気がする. GCC 4.6.1 -std=c++0x で動いたような気もする. #include <iostream> // 第1引数に enumeration の identifier (enum-name) を // 第2引数</iostream>…

Boost.Build @ Linux + GCC + GNU Linker

Boost.Build において,各ターゲットの種類に対してビルドプロパティの値が具体的にどのようなコマンドラインオプションに対応するかを, Linux + GCC + GNU Linker の環境において例示するという,私以外の誰も得をしないしそもそも他に理解できる人が居る…

任意の expression に透過的に hook を仕掛けるようなマクロが書けるのではありませぬか?

以下のコードでやっていることの説明. EXCEPTION_HOOK((expr))と書いておけば, (expr) という C++ の式を実行したら急に例外が来たので……というときに, call stack のようなもので殴られた跡 (この hook が仕掛けられている場所に関する情報) を boost::e…

A*

http://okajima.air-nifty.com/b/2010/01/post-abc6.html 余計なことして遊んでたらマジで制限時間ギリギリの3時間かかってしまった...orz しかも色々はしょっているわ,出力に S, G が出てないわ... A* で discover されなかったノードに対する情報を…

ぷろあくた\(^o^)/ ぱ〜とすりぃ〜

Boost.Asio はもうちょっと↓みたいに(ry

ぷろあくた\(^o^)/ ぱ〜とつぅ〜

Boost.Asio はもうちょっと↓みたいに proactor な部分で遊ぶのを前面に押し出してほしい気がします的なっていうかこれさっきゆった. 要 Boost 1.36.0 以上.少なくとも Windows Vista 64bit (ただし WIN32 の configuration でビルド) + MSVC 8.0 では動い…

ぷろあくた\(^o^)/

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 のビルドのバッドノウハウ

Boost 1.35.0 になってビルドの方法が変わってて,単に bjam 動かしただけでは以下の設定しかビルドされにゃい リリースビルドで マルチスレッドで 共有ライブラリで ランタイムを動的リンクする ./configure && make install も同じっぽ? autolink に頼っ…

enable_shared_from_this があんまり好きになれないにゃー

boost::enable_shared_from_this ,あるいは一般に,単純な参照もしくはポインタによってオブジェクトが与えられたとき,そのオブジェクトへの boost::shared_ptr (共有セマンティクスを持ったスマートポインタ) を得ることができるインタフェイスを提供する…

おいおいおいおい.C++ クックブックの TOC に「Boost.Buildによる複雑なアプリケーションのビルド」とかあるじゃんっ! GNU make よりも先に紹介されてるし!いつの間にそんなに偉くなったんだ Boost.Build!? ちょっと今からアレ買うついでに買ってくるる…

うーんと,日本語で Boost.Build 周りについてまとめてくれてる人って居るのかな?

aliasing + factory で shared_ptr の生成を効率化

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 にサポートしてないの?

どうでもよいけれど Boost.Signal ってなんで boost::weak_ptr を native にサポートしてないの?あの trackable ってクラス定義に intrusive に影響するから使うのを避けられるなら避けるに越したことはないと思うんだけどにゃー.自分で勝手に外側に組めっ…

boost::shared_ptr と boost::weak_ptr を使って異種型混合キャッシュ

boost::weak_ptr のメジャーな使い方にキャッシュがあるけれど,単にキャッシュで使うような例示コードはどっかに転がっている気がする (でもさっきぐーぐるせんせにお聞きしたら日本語では転がってないみたいだけど) ので,もう1段 boost::shared_ptr も使…

Pipable Function / Pipable Lambda

http://d.hatena.ne.jp/mb2sync/20061205#p1 これ以前導入しようとしたけれども, lambda functor と組み合わせたときに, lambda functor としての operator| か pipable function の operator| かが曖昧になるから回避してたにゃあ.でも,今よくよく考え…

iterating_range

みょみょみょ.あくまで自分向けのメモな段階でのドキュメント. 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 をまともに追ってなかったか思い出した.

でした

だいたい Phoenix でした……orz

っていうか

っていうかそれは Phoenix ではないのだろうか?

簡易 lambda 記法 - bind を用いない部分評価・関数合成,っていうか bind 嫌い嫌いだいっきらいっ!

昔っからずっと思っておりましたんですが,ばいんどきらい. bind( plus, _1, 1 );ほらもうきらいきらいだいっきらい.ばいんどしんぢゃえ. plus( _1, 1 );こう書きたい.めがっさ可読性上昇.ほら,こんな書き方ができたら,あなたも今日から初めてみよう…

Haskell Prelude にある list 系関数のうち range adaptor にしたら面白そうなヤツは全部 C++ に移植する的俺様専用メモ

break - rangeEx にある同名 (ただし過去分詞) なヤツは意味が違うよにぇ. Prelude に対応するものがないけれど rangeEx のヤツのセマンティスクに Prelude 風の名前つけるとしたら takeUnless? concat - lvalueness についてかなり複雑なこと意識する必要…

std::string, std::wstring 以外の std::basic_string の specialization に対する serialization

昨日の話. std::string, std::wstring 以外の std::basic_string の specialization を serialize しようとするとコンパイルに失敗しますよよよ?な話. typedef std::basic_string< unsigned short > String; // String に対して serialize ができないこの…

std::string, std::wstring 以外の std::basic_string の specialization に対する serialization

昼ごろに書いてた同タイトルのエントリー,あれ多分間違ってる. runtime で archive が壊れる.多分 load に失敗してる.っていうか挙動が良く分からなくなった.要再調査.

Unicode Regular Expression

効率を度外視すれば,内部で UTF-32 に変換 (+実文字列の offset とのマッピングを保持) した上で boost::regex を使うことによって, UTF-8 なり UTF-16 なりの文字列を TR18 の Level 1 の意味で扱える正規表現実装をかなり簡単に書けるような気がしてきた…

Boost.Pool

#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>…

っていうか Boost.Threads にセマフォ semaphore 無いんですけどっ!?

副題:最近は (スレッド間で共有されるメモリに対する同期処理としては) セマフォは推奨されていなくて, mutex か, mutex と condition variable の組み合わせを使うことが推奨されている風潮があるんですけどっ!?でもそれに関する具体的な rationale が…

Read/Upgradable/Write Lock

http://thread.gmane.org/gmane.comp.lib.boost.devel/149858/focus=149879 経由で. あは. あはは. あははは. なぜわざわざこんな upgradable mutex なんてもの導入しているかについてはこことかここ参照. upgradable lock を簡単に説明すると「排他的…

From Mechanism to Method:The Safe Stacking of Cats

http://www.ddj.com/dept/cpp/184403815 これ面白かった.この記事,以前読んだことがあったのだけれど,そのときは記事の前半だけ流し読みしてて「知ってる話っぽいからいーや」とか思って途中で読むのやめてた.しかし,後半が例外安全かつスレッド安全な…

range::transformed + cradle::lexical_cast + range::delimited + range::jointed

とりあえず,なんか以下のコード片みたいにいろんな 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, ..…