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

コンパイルタイム・ポリモーフィズム

前日分を少し実践的に書き直しました VC6からComeauまで動きます おそらくこれがC++のポリモーフィズムの答えであると思われる Boost.Rangeはあのままではまずいと思う Boost.Serializationではoverloadedの部分がconst unsigned int versionになっていて、v…

Argument Dependent Lookup Trigger

Boost.Serializationで発見。正式名称は不明・・・参照 引数adl_triggerによってADLを意図的に引き起こす ADLは、テンプレートのインスタンス生成地点(2nd phase)から名前を探すことができる カスタマイズする側は、提供される名前空間xxx_overloadにオーバ…

utf8_decode_range

前回のはイテレータを直接使っているので見づらいです それらをboost::iterator_rangeを使ってRangeにしました・・・ダウンロード []#include[] []<fstream>[] []#include[] []<iterator>[] []#include[] []<string>[] []#include[] []<boost/cstdint.hpp>[]</boost/cstdint.hpp></string></iterator></fstream>

Boost.UnicodeIterator

Boost.Regexにこっそりあるのを発見 utf8_codecvt_facetというのもあるらしい 以下、UTF-8のxmlファイルからコメントを抽出するコード ところで、をインクルードすると、std::equalがstd::mismatchを'std::'を付けずに呼び出している(実装がある)ので、それ…

Version 1.09

全く関係ないですがついでに・・・ダウンロード Windows Media Player 9のデフォルトのスキンCoronaの不具合を直したものです

boolean_cast

BOOLとboolを変換します・・・ダウンロード BOOLとboolの暗黙の変換は安全ですが警告がでます それを消そうとして return ::SomeAPI() == TRUE; とするのは危険です 成功の値としてTRUE(1)ではなく「0ではない」値を返すAPIがあるから static_castは意味が多…

はてなリング

C++

C++言語のはてなリングができています・・・http://cpp.ring.hatena.ne.jp/

The Biscuit Parser Library

ひとまず完成・・・ダウンロード YARDのBoostへの移植です Expression Templateを手作りすることによって小さく速いコードを生成します Boost.SpiritやBoost.Xpressiveはオブジェクトから作ります VC6でもなんとか動きます []using[] []namespace[] []biscui…

変数名推論

tupleの場合はできます "推論"に、使用する関数の仮引数の型を使える場合もあります (auto_element) []#include[] []<set>[]</set>

Boost.Futures

Herb Sutterの講演に出てきた物がもうあった マルチスレッドプログラミングをモダンなシンタックスで支援する 実装にBoost.Fusionを使っている []#include[] []<iostream>[] []// for std::cin[] []#include[] []<boost/assert.hpp>[] []#include[] []<boost/bind.hpp>[] []#include[] []<boost/concept_check.hpp>[] []// for igno</boost/concept_check.hpp></boost/bind.hpp></boost/assert.hpp></iostream>…

boost::iterator_castとauto_base

Boost.RangeExに含まれ、Boost.IteratorのIterator adaptorの元になったiteratorを取り出します auto_baseはcast先の型としてauto_baseを渡す関数の仮引数の型を使います 実装は、「cast先の型と一致するまで、再帰的にbase()メンバ関数を呼び出す」というこ…