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

result_of

result_ofについて・・・参照 result_ofの利用者は大胆に型を訊ねて良い 実際にどのように引数を受け取るかは関数オブジェクトの実装者の自由 result_of::typeは常に成功し、デフォルト値(void)を持っている・・・参照 引数のない(つまりテンプレートでない)…

さよなら関数

Boost.Sequenceを少し覗いてみましたが、ショッキングなことになっている 汎用関数においては生の関数がdeprecatedになるのかもしれない 関数に見えるものが実は関数オブジェクト Forwarding問題を解決するクラスを利用できる(実装はそのクラスから呼んでも…

Boost.Sequence?

昨日の続きですが、普通にresizeを提供した方がいい気がする このような感じで []TCHAR[] []szSrc[][][] = [][]_T[][]([][]"hello, cstring_begin!"[][]);[] []std[][]::[][]basic_string[][]<[][]TCHAR[][]> [][]ans[][]([][]szSrc[][]);[] []{[] []std[][]…

cstring_begin

いまboost::fixed_stringのレビューが行われている 古いAPIにバッファを渡す方法を考えてみた・・・ダウンロード ATL/WTLのCStringにも対応できる 参照 Effective STL Item16 (C++ 23.2.4.1) 一時オブジェクトの生存期間 []char[] []src[][][[][]21[][]] = […

ヘッダでusing-directiveを使う

using-declaration、typedef、Metafunction等で名前を持ってくる VC8では恐るべきバグがあるようだ []#include[] []<boost/config.hpp>[] []#include[] []<boost/detail/workaround.hpp>[]</boost/detail/workaround.hpp></boost/config.hpp>

プリプロセッサシンボルをMetafunctionにする

これは間違っているような気もするしマクロをなるべく避ける観点からは正しい気もする 個人的にはソースがきれいになったと感じた場合もあります []namespace[] []pstade[][] {[] []template[][]< [][]class[][] = [][]boost[][]::[][]mpl[][]::[][]void_[][…

Argument Dependent Lookup(ADL)についての情報

C++ Templates - The Complete Guide この本がなかったらと考えると怖い Boost.Serializationの存在も危うい?・・・参照 A Modest Proposal: Fixing ADL (revision 1) ADLの侵入先を狭める提案 ADLを引き起こした引数の型と位置が一致しない場合は候補にし…

crtp_cast

ATL/WTLではCRTPというテクニックを多用している これはtemplateを使ったTemplate Methodパターンである(ややこしい) static_castが使えるが意味が多すぎるので避けたい、そこで・・・ダウンロード キャストさえ面倒な人にはauto_derived []#include[] []<pstade/crtp_cast.hpp>[]</pstade/crtp_cast.hpp>

最新の?forループ

繰り返しも再利用可能なクラスに(無駄に)できる boost::counting_iteratorというのがあるのでそれをRangeにする・・・ダウンロード []std[][]::[][]vector[][]<[][]int[][]> [][]vec[][];[] []int[] []ans[][][] = { [][]0[][], [][]1[][], [][]2[][], [][]3…