2005-10-01から1ヶ月間の記事一覧
Boost.MultiIndexにこっそりある。Vaultにもある おおもとの解説。 こんなものも。 Type ErasureとRAIIの二つをからめたテクニック Boost.ForeachはType Erasureにのみ使っているようだ 汎用的なRAII担当の型はauto_ptr等とは違って複雑になってしまうのでTy…
Boost.Xpressiveに含まれ、Expression Templateの実装を支援する 似たようなライブラリと思われるもの・・・PETE, Daixtrose []#include[] []<boost/assert.hpp>[] []#include[] []<boost/xpressive/detail/proto/proto.hpp>[] []#include[] []<boost/xpressive/detail/proto/compiler/fold.hpp>[]</boost/xpressive/detail/proto/compiler/fold.hpp></boost/xpressive/detail/proto/proto.hpp></boost/assert.hpp>
Rangeを受け取りRangeを返す関数を連続で呼び出すとき h(g(f(rng))) を rng | f | g | h のように"手続き的に"書ける Boost.RangeExのboost::adaptor名前空間にあります 名前が提案と違って過去分詞ではないので注意 見た目に反して、あるRangeへの実装はす…
手前の型に依存する型でないテンプレート仮引数による部分特殊化はできない boost::mpl::vector_cはlongで決めうちなのでそれ以上のサイズの型では切り捨てが起こる []#include[] []<boost/mpl/vector_c.hpp>[][]template[][]< [][]class[] []T[][], [][]T[] []t[][] >[] []struct[] </boost/mpl/vector_c.hpp>…
関数にするほどでもない時に。 []// C[] []int[] []x[][], [][]a[][], [][]b[][];[] []a[][] = [][]f[][]();[] []b[][] = [][]g[][]([][]a[][]);[] []x[][] = [][]h[][]([][]b[][]);[][]// C++ ?[] []int[] []a[][] = [][]f[][]();[] []int[] []b[][] = [][]…
戻り値にsub_rangeを使うと、一時オブジェクトによって意図しないconst性が付加されてしまう iterator_rangeのconst性は、それが保持するiteratorのconst性に関与しない Boost.StringAlgorithmのように、戻り値には必ずiterator_rangeを使うこと sub_rangeは…
某書とかぶりましたが偶然です []assert[][]([][]marker[][] != [][]s[][].[][]get_cur[][]() && [][]"biscuit::star - Parser must advance on star-operation"[][]);[]
Conditional Love: FOREACH Reduxにあります Foreachに興味ない人でも必見
boost::const_beginがbeginを限定せずに(boost::なしに)呼び出している これがADLを引き起こし、一つのRangeがあるというだけでその名前空間でbeginという名前が使えなくなってしまう boost::beginを呼び出すべきだと思う クラス名までADLに取り込んでしまう…