lambda式を直接適用可能なtransform_iterator

id:Cryolite:20040518で指摘したように,transform_iteratorに直接lambdaを渡すことが出来ません.なので,これを可能にするコードを書いてみました.が,よりによって一番やりたくない解法であるマクロを使うことになりました.しかし,これが限界というか,これ以上のものを作るにはtransform_iteratorかlambdaのソースを直接いじる必要があると判断したのでここら辺で区切りつけて,これ以上の深入りはやめます.思ったよりだいぶ難しい・・・.というか,外部からこれを可能にするのは本質的に無理な気がします.それによくよく考えたら,lambdaはoperator()がoverloadされているのだから,Adaptive Unary Functionになりようがないですね(返り値型のtypedefを出来るはずが無い).ということで,もしコードをいじるならtransform_iteratorの方でしょう.ちらっと読んでみた限りでは超難解ってわけでもなさそうですし.
以下は,作ったヤツのお試しコードです.

// より確実であると思われる実装が出来たので掲載をやめました.

ところでどうでも良いですが,依存名解決の用途で使うtemplateキーワードを初めて使ったのが嬉しかったりw.