- 862 名前:デフォルトの名無しさん mailto:sage [2005/08/23(火) 16:29:46 ]
- 人稲杉なので、チラシの裏
boost::bind は、bind( f, _1, _2, a, b, _1 ) を行うことで、 func::return_type ( A1 & a1, A2 & a2 ) というファンクタを返すけど、 この _1 や _2 を、_decimal や、_text、_float のような書式指定プレイスホルダに 置き換えて、以下のようにすれば、タイプセーフな printf が出来るなと 考えたことがあった。 function< void( int ) > f = format( cout, "a = ", _hex, endl ); // ↑ cout << "a=" << %x << endl; と同じ事を行うファンクタを返す。 f( 10 ); // cout << "a=" << hex << 10 << endl; f("aaa"); // コンパイルエラー 上の形とは違うけどその思想に基づいて実際に作ってみたことがある。 でも結局実用では (w)sprintf しか使わなかった。勉強にはなったけどね。 template プログラミングは楽しいけど、冷静なるとしなくていいことまで テンプレート化してたりしていることがあるので気をつけないと。
|

|