Boost
Boost.Serialization で,デフォルトコンストラクタを持たないクラスをシリアル化する際の注意. 普通のシリアル化ではクラスにデフォルトコンストラクタが存在しなくても問題はない.しかし,ポインタ(boost::shared_ptr や boost::scoped_ptr などのスマ…
Range というものが,ただのコンテナの拡張ではなく,いかに「うはーゆめがひろがりんぐ」なものであるか. がリリースに入っていないので, CVS HEAD からコピペ.要 Boost 1.33.0.
ちぅか,昨日のをスコープ限定型演算子構文糖(http://d.hatena.ne.jp/Cryolite/20050205#p1 の『[Boost][Range]iterationできるrange』を参照)使って書いたら楽しいことになる予感!! namespace cry{ namespace iostreams{ namespace composite_operators…
Boost.Iostreams で遊んでみた結果,最終的に以下のようなコードに行き着く. ( cry::iostreams::newline_filter は boost::iostreams::newline_filter が Peekable を要求していてあんまり使い物にならないのを改良したもの. cry::iostreams::u_converter…
ある整数型がある整数型で表現可能(前者が表現可能な値の範囲が,後者が表現可能な値の範囲の部分集合になっている)かどうかを判定する特性クラスとして boost::numeric::is_subranged template<class T, class S> boost::numeric::is_subrangedという特性クラスがある.で,</class>…
template< class SinglePassReadableIterator , class IncrementableWritableIterator , class SequenceMetaFunctionClass > void algorithm_using_temporary_buffer( SinglePassReadableIterator first, SinglePassReadableIterator last , IncrementableWr…
そ〜いえば書くの忘れてて Boost.Random の話が出たので思い出したけれど, http://d.hatena.ne.jp/Cryolite/20050423#p2 この問題は // variate_generator のテンプレート第1引数が参照型なのに注目! variate_generator<mt19937 &, uniform_int<> > rnd(rng, uniform_int<>(-1000,10</mt19937>…
乱数生成系の Boost クラスは何かインターフェースが統一されていないというか,ドキュメントに書いてあるコンセプトの有効式がいくつか通らないクラスが多数ある.特にシード設定のあたりが乱数生成クラス毎にばらばらで統一されてない感があった.でも, h…
一般に「入力」や「出力」を受けるインターフェースは何を受けるべきか?という問題. たとえば,今考えている入力はファイルだからファイルストリームを受ければ良いかなぁ,でもファイルのパスを受けるっつーのもあるかにゃー?ファイルポインタはどうだろ…
http://www.boost.org/ 1.33.1 Beta のリリースに今頃気が付いた……ってかベータってどういう扱いだ? ところで,VC++ 8.0 に関して Microsoft Visual C++ 6.0 (sp5, with and without STLport), 7.0, 7.1, 8.0. Note: Boost does not support the non-standa…
http://thread.gmane.org/gmane.comp.lib.boost.build/9291 うひょー.これめちゃくちゃ欲しかったんだよ〜.これでインストールターゲットをソースとすることによって,「ある実行ファイルを(依存する共有ライブラリとともに)特定の場所にインストールし…
どーでも良いけれど,いや良くないけれど,ストリーム上でのコード変換って一般に non-blocking なんだよなー.Boost.Iostreams って今のところ blocking I/O しか対応してないから,non-blocking I/O を blocking I/O に修正しないといかんのが微妙に面倒と…
今,シークが可能な入力ストリームがあったとして,そのストリームに何らかの変換,例えば文字コード変換を行ってその変換結果を読むようなフィルタを実装するとする. 便宜上,(フィルタから見た立場で)変換前の入力ストリームを「入力ストリーム」,変換…
以下,自動変数の char 配列として確保した領域に,配置構文 new でオブジェクトを構築する方法に対する安全性の考察をやっています.ただし,C++ におけるアラインメントの考察を,実際のハードウェアなどの概念から完全に隔離された,厳密な規格の記述だけ…
http://d.hatena.ne.jp/Cryolite/20051021#p1 の問題に対する解答. まず大前提として,未初期化な領域に配置構文 new を用いてオブジェクトを構築する手法は潜在的な危険が多く,本当にそれが必要な場合以外は用いないという方針が基本であることを確認して…
以下,BOOST_ROOT を Boost のディレクトリのルートとする. 今,BOOST_ROOT にいるとする.コマンドライン上で tools/bcp へ移動して bjam でビルド. >cd tools >cd bcp >bjam (オプションは Boost のライブラリのビルドと一緒)この時点で BOOST_ROOT の…
(注意:あくまで C++ の言語規格 ISO 14882-2003 のみを想定します) 未初期化なメモリ領域を char 配列の自動変数として(スタック上に)確保し,その領域上に別の型のオブジェクトを構築するコードを考えてみる. class MyClass { ..... }; int main() { …
Boost.Test が,いつの間にか MSVC 上でメモリリークをレポートしてくれるように改良されていた.これでもうメモリリーク検出のための設定をいちいち自分で呼び出す必要がなくなった.ちょーウマー. #define BOOST_AUTO_TEST_CASE #include <boost/test/auto_unit_test.hpp> BOOST_AUTO_TES</boost/test/auto_unit_test.hpp>…
ふと思ったけれど,Expression Template で代入文の右辺だけじゃなくて,代入文も含めて ET にしてしまって,full expression の評価が完了した時点の一時オブジェクトのデストラクタ発動のタイミングで,ET にエンコードされた実際の式の評価を発動するっつ…
Mix-in というか,クラスに対して aspective な機能の injection をやろうとするときには,クラスに随伴する名前空間(associated namespaces)に ADL hook を追加するっつーのが最近の C++ での流行なんだろうか? ちぅか,Boost のその系統のライブラリは…
目的 r を Range (配列やコンテナの一般化)とするとき, // r の要素を各々表示する // it はイテレータの名前 CRY_FOREACH(it, r){ cout << *it << endl; }という構文を C++ 標準の範囲内の実装で可能にしたい.Boost.Foreach があるが,いくつかの点で気…
ある型 T に対して T の左辺値 T の const 左辺値 T の右辺値 T に変換可能な(ただし T 自身ではない)型の値 T に変換可能でない型 以上を識別したい,というモチベーションに関する実験メモ. MSVC 7.1 と GCC 3.4.4 で確認済み.要 Boost 1.33.0. #incl…
http://d.hatena.ne.jp/Cryolite/20050906#p2 に関して. には絶対パスを指定しないと機能しないことが判明. import path ; pwd = [ path.pwd ] ; # target が依存する全ての実行ファイルと共有ライブラリを # bin 以下にインストールする.hardcode-dll-pa…
少なくとも開発・テスト中は「他(システムディレクトリや LD_LIBRARY_PATH 等の環境変数)を汚さない」を最優先の指針として以下が一番妥当か. # target が依存する全ての実行ファイルと共有ライブラリを # bin 以下にインストールする.hardcode-dll-paths …
なんか発見した type 名. STATIC_LIB SHARED_LIB IMPORT_LIB …って,なんだ SHARED_LIB っつー type あるじゃん.っていうか無いとおかしいけど. LIB は SHARED_LIB + IMPORT_LIB な感じか.<install-type>LIB と指定するとインポートライブラリまでくっついてきて「実行</install-type>…
結局,よそから引っ張ってきたターゲットについて細かいことをしたいときには alias を1段挟むのが一番妥当な気がしてきた. use-project /boost : path-to-boost ; # toolset が msvc の場合の boost_filesystem に対する alias alias boost_filesystem : /…
BOOST_ALL_NO_LIB (BOOST_***_NO_LIB) で auto_link を切っていても,動的ライブラリのリンクの際には依然 BOOST_***_DYN_LINK (BOOST_ALL_DYN_LINK) の指定が必要. BOOST_ALL_NO_LIB が単に #pragma comment(lib, ***) のon/off制御である一方で,BOOST_**…
今更 http://www.kmonos.net/wlog/52.php#_0308050827 http://d.hatena.ne.jp/Nabetani/20050901#p2 らへんを読んで,以前ここら辺の話題で遊んだことがあったので http://d.hatena.ne.jp/Cryolite/20041124#p1 そのときのやつをちこっとだけ変形.
てか,Boost.Build普及のために自分が知ってるBoost.Buildの知識ぶべべべべっと吐き出した方が良いような気がしてきた.
てか,Boost.Buile v2でBoost引っ張ってくる設定毎回書くの面倒くさいにゃー.site-config.jamかuser-config.jamにまとめられないかにゃー. import modules ; import path ; local boost-build-path = [ modules.peek : BOOST_BUILD_PATH ] ; local boost-r…