Boost

project-root.jam + Jamfile = Jamroot

いつの間にかproject-root.jamがルートにおけるJamfileの役割を吸収して,Jamrootという1つのファイルで代替可能なようになってるにゃー.

lexical_castとワイド文字(wchar_t)とVisual C++と

boost::lexical_castがMSVCのwchar_tに対して機能しなくて,なんでかな〜と思って原因調べたらwchar_tが固有の型であることを要求していることが判明(BOOST_NO_INTRINSIC_WCHAR_Tを見て,固有でないならワイド文字の実装を切ってる).IDE上のビルドで上手…

Boost.Regex + ICUでも遊ぶ気満々

http://www-306.ibm.com/software/globalization/icu/index.jsp うふ.うふふ.うふふふふ….

Boost.Iostreamsで遊ぶ気満々

http://www.zlib.net/ http://www.bzip.org/ 早速Windows用バイナリ落としてきた. うふ.うふふ.うふふふふ….

Boost.Iostreams

うはー.これちょーおもしろそー. あくまで標準C++のI/Oの枠組みに従ったストリーム(あるいはストリームバッファ)を楽に構築するという立場なんですな.iteratorに対するBoost.Iteratorの立場というか. 現在のC++標準のI/Oの枠組みはいろいろ気に入らな…

Boost.Build (V2)でtarget directoryを変える

どうもALL_LOCATE_TARGETをいぢれば良いらしい.後で実験. http://boost-consulting.com/boost/tools/build/v1/build_system.htm#targets

alignment系アルゴリズム

alignment系のアルゴリズムの実装ってどこかに落ちてにゃいかにゃ〜と探してみたけれど,見つからにゃいので自分で作るのにゃ. Boost1.33.0で確認.VC7.1ではauto_linkを使っているのでライブラリをビルドしていてパスを適切に通していればリンク指定不要.…

Boost1.33.0

今回はトップページに既存ライブラリの詳細な更新内容が出ているから書くことがない….具体的な応用例思いついたら順次挙げていこうっと. トップページに載っていないので目に付いた変更点といえば,Boost Configuration Libraryで定義されるマクロのうち,…

utf8_codecvt_facet_wchar_t

utf8_codecvt_facet_wchar_tってUTF-8N専用なのな.BOMありのヤツ読もうとしてはまったとゆー.BOMの読み飛ばしぐらいやってくれても良さげなのににゃー.

boost::minmax

http://www.boost.org/libs/algorithm/minmax/#synopsis boost::minmaxって参照のタプルを返す仕様なのな.そりゃ boost::tie(x, y) = boost::minmax(x, y);こんなことすりゃはまるわな.てか,なぜか値のtuple返すと思い込んでいたとゆー. というか同種の…

a series of books on Boost

http://thread.gmane.org/gmane.comp.lib.boost.devel/127274 ミスポストみたいだけれど書いてある内容は超むっはー!っていうかすでに構想段階から「シリーズ」になるのは確定なのか・・・. // hdn

Range Adaptor

Range Adaptorは非常に面白いけれど,一時オブジェクトの寿命の問題が絡むと少々複雑というか,Range AdaptorはRangeのコンセプトの要求を満たさないんじゃないだろうか. というか,そこら辺の問題のせいでわざわざRangeに酷似したViewなんてコンセプトが出…

Rangeのiterator_rangeとStringAlgorithmsのiterator_rangeの衝突

Boost1.32.0でstring_algoのsplit.hpp等で使われるiterator_rangeとBoost.Rangeのiterator_rangeが衝突する. #include <boost/algorithm/string/split.hpp> #include <boost/range/iterator_range.hpp> int main() {}CVSのHEADでは解決されているので1.33.0以降では大丈夫になるはず.とりあえず現在の応急処置的には「string_a</boost/range/iterator_range.hpp></boost/algorithm/string/split.hpp>…

メモリ内Serialization

どうしても(PODであるかどうかといった)何らの仮定もおけない型を型安全じゃない形(バイナリ)でメモリ上に記録する必要があって,そうなるとどうしても環境を変えた際の危険性が付きまとう.Serialization + αでそういう部分をある程度安全かつ汎用に扱…

楽ちん

あは〜ん.serializationがこんなに楽で良いのかしら?もう何も考えずに「え〜あ〜るあんど!!え〜あ〜るあんど!!」*1 *1:アーカイブオブジェクトをarとしてar &という式をこう呼んでいる

ユーザ定義のクラステンプレートに対してBoost.Seriazation用のversioningを行う

#include <boost/serialization/version.hpp> namespace My{ template<class T> class MyClass { ..... }; } // namespace My namespace boost{ namespace serialization{ template<class T> struct version<My::MyClass<T> > { BOOST_STATIC_CONSTANT(unsigned int, value = 2); // versionを2に指定する }; }} // namespace bo</my::myclass<t></class></class></boost/serialization/version.hpp>…

Boost.Serialization

Boost.Serializationおもすれー( ^ω^) というか面白いもへったくれもなく,何も考えずにsave & loadできるというのがよろしいじゃあ〜りませんか. binary archiveは(当たり前だけど)互換じゃないって書いてあるから,primitiveのサイズなりbyte order…

std::map + boost::tuples::tie + BOOST_FOREACH

以下のコードは,Boost1.32.0に加えてここにあるforeachのヘッダをboostのディレクトリに放り込んである必要があります. #include <map> #include <string> #include <iostream> #include <boost/tuple/tuple.hpp> #include <boost/foreach.hpp> using namespace std; using namespace boost; int main() { map m; m["衛"] = "</boost/foreach.hpp></boost/tuple/tuple.hpp></iostream></string></map>…

C++ Ramble

meta-double - コンパイル時浮動少数 ンマァ!!ちょっとML追ってない間にこんな提案があったなんて!! http://thread.gmane.org/gmane.comp.lib.boost.devel/125682 Boostはこんなところで使われています http://freespace.virgin.net/boost.regex/who/htm…

lambda v.s. unlambda

このアイデア,ファンクタを取るファンクタに適用すると,ラムダを受けたときに 全体をラムダにする 受けたラムダをunlambdaしたものとして扱う という,ちょお頭いたぅ〜な2択問題が・・・.

普通のファンクタとラムダという2足のわらじ

ファンクタとラムダ双方を兼ねるようなファンクタって作れるのかにゃ?つまり一つでもプレースホルダを引数に取ったらラムダで,全部の引数が普通の引数ならファンクタとして普通に値を評価するという・・・. Boost.Lambdaの実装読めば簡単にできそうな気が…

各toolsetに対してターゲット(のalias)を宣言する

忘れそうなのでメモ. import feature ; # ここでターゲット`t'が宣言されているとする. # `feature.values <toolset>'は`user-config.jam'で宣言されている # 全てのtoolsetのリストを返す. for i in [ feature.values <toolset> ] { alias t-$(i) : $(t) : <toolset>$(i) ; t-for-al</toolset></toolset></toolset>…

チラシの裏

あ,そうか・・・.外側を隠すっつーのなら対等に混ぜればいいわけじゃん. #うぎゃー!!これバグじゃ・・・?標準規格的には完璧にOKなはずにゃ〜!! #まぢかよ・・・.これ曖昧なのかよ・・・.オーバーロードにしてくれてもいいじゃ〜ん.ぶ〜ぶ〜ぶ…

C++ Ramble

typeofエミュレーションの内部実装の説明 http://article.gmane.org/gmane.comp.lib.boost.devel/121135 このCry's Diaryでtypeofエミュレーションの実装詳細の説明をしようと思っていたのですが,BoostのTypeofエミュレーション実装者本人が解説記事を書い…

式有効性判定手法

くそぉ・・・.任意の式が有効かどうかを判定するintrospection系メタ関数の実装手法を思いついたのにGCCで通りやがらねぇ・・・.VC++7.1では通るんだけどなぁ.まぁ,明らかに言語規格の間隙を突いたような実装なので無理もないっちゅーたらそうなんだけど…

実体共有型転送関数オブジェクトクラス(仮)

あ,そうか.別にRandom Number Generatorに限らず,pimpl (handle-body idiom)を使った実体(状態)共有のためのファンクタラッパ欲しい状況は結構あるからそ〜ゆ〜汎用転送ファンクタクラスを作ってしまえば良いのだっ!!!作ってみよ. #作った

boost::ramdomの乱数生成器とオブジェクトのコピー

http://d.hatena.ne.jp/halo_w2/20050422#p2 これ前から気になってたんですよねぇ.自分が一番いやだと思う例が mt19937 rng; variate_generator<mt19937, uniform_int<> > rnd(rng, uniform_int<>(-1000,1000)); vector<int> v; list<int> l; generate_n(back_inserter(v), 50, rnd); generat</int></int></mt19937,>…

MinGW + Boost.Build V2 (bjam)

user-config.jamの設定が using gcc : : C:/MinGW/bin/g++.exe ;(パスは環境に合わせて適当に読み替えて)で,なおかつC:/MinGW/binにパスが通ってないといけない.gccの方を指定するとC++のランタイムを見てくれない(なんで?)のと,C:/MinGW/binにパス…

C++ Ramble

[数学]Mersenne Twister initialization problem http://thread.gmane.org/gmane.comp.lib.boost.devel/120420 あんまり関係ないけれど,確か2002のバージョンはシードとして0を受け付けるんだったけか?(1998のバージョン(Boost1.32.0のMTの実装)はシー…

C++ Ramble

rangeアルゴリズムの将来設計 http://thread.gmane.org/gmane.comp.lib.boost.devel/119987から http://article.gmane.org/gmane.comp.lib.boost.devel/120018 汎用は汎用でも汎用の次元がががが・・・. 固定長配列を渡るイテレータは型にindexの情報を埋め…