nested lambda

  • lazyにおまけでbind関数を変更するためのパラメータ(Bind)を付けて置いたがこれが重要だった
  • Bindにresult_of_lazy::typeを渡すとネストされたlazyな関数を作れる (実装)
  • これで機械的に複雑なlambda式が作れるようになった、かも
    • lvNはbll::protectをN回呼び出す
    • nest1はlazyと同じ
// \x -> (\y -> (\z -> foo(y,z,x)))
BOOST_CHECK( nest3(foo)(lv1(_1), lv2(_1), lv0(_1))
    (3)(6)(1) == foo(6,1,3) );

// \x -> apply(\y -> minus(x,y), plus(x,3))
BOOST_CHECK( nest1(apply)(nest2(minus)(lv0(_1), lv1(_1)), nest1(plus)(lv0(_1), 3))
    (9) == minus(9, plus(9,3))  );

Variadic functions in C++98

  • fuse/unfuseを使ってvariadic functionのエミュレートを試みた…実装
  • Argsに何を渡すかだが、将来的にはfusion::vector固定でいいと思う
    • FusionSequenceはRangeのようにviewを取り出せる
続きを読む

vs msvc-7.1 const array

  • deduceされた配列にconstを付けるとpartial specializationがいっさい効かなくなるvc-7.1のバグの回避策を発見…実装
    • これでようやくconstと書くことができる
    • 今まではconstの代わりにboost::add_constを関数の宣言のところに書かなければいけなかった
続きを読む