2005-08-01から1ヶ月間の記事一覧

APIへバッファを渡すいろいろな書き方

C++

[]#define[] []ARRAY_SIZE[]([]array[]) ([]sizeof[]([]array[])/[]sizeof[]([]array[][0]))[]template[]< []class[] []T[], []std[]::[]size_t[] []sz[] > []inline[] []std[]::[]size_t[] []array_size[]([]T[] (&[]array[])[[]sz[]]) { []return[] []sz[];…

Boost.Rangeとchar配列

char配列をboost::endやboost::sizeに渡すと、文字列と見なして、存在しない終端文字'\0'を探しに行く Boost.Arrayで回避できる Boost.RangeはMFCのCString用のrange関数をやる気がなさそうに持っている 参考

ほんとうのforループ

ほんとうに今まで知らなかった 突然気づいて驚いたのでBoostのソースコードを検索したらちゃんと使われていました []for[] ([]int[] []i[] = 0, []count[] = []toolbar[].[]GetButtonCount[](); []i[] < []count[]; ++[]i[]) { []// ...[] }

Boost.ConfigがeMbedded Visual C++ 4.0で定義する主なマクロ

BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS 実行時まで失敗が分からないので注意 BOOST_(APPEND_)EXPLICIT_TEMPLATE_(NON_)TYPEを必ず使うこと それでもコンパイルが通らない場合があった BOOST_NO_FUNCTION_TEMPLATE_ORDERING BOOST_NO_MEMBER_TEMPLAT…

Loki(Modern C++ Design)とBoost.MPLの対応のまとめ

おそらくアロケータ関連のもの以外の全てをboostは持っている Int2Type: boost::mpl::int_ Type2Type: boost::type Select: boost::mpl::if_ TypeTraits: Boost.TypeTraitsとBoost.CallTraits Big, Small: yes_type, no_typeなど 実装の詳細 NullType: boost…

reStructuredText

出力されるhtmlの見た目が一番きれいだと思う これだけではキーワードのハイライトはできないようだ 使い方はBoost.MPLなどのdocフォルダにソースが入っているので参考になる Boost風のスタイルシートがある(おそらくBoost 1.33.0の新規ライブラリのために) …

Multiple access

C++

多重継承によって、基底クラスの単一の名前に複数の継承経路からアクセスする場合、アクセス権のもっとも緩いものが考慮される これで救われた。DSEL(言語内言語)の設計では思わぬ文法が重要になる []class[] []W[] { []public[]: []void[] []f[](); }; []cl…