続 coroutineの引数対応

Boost.Preprocessorで3引数以上にも対応しました。
かなり読みにくくなっています。
<hamigaki/coroutine/detail/coroutine_template.hpp>
内部で

boost::functionN < R,self&,T1,T2,...,Tn >

を使っているため、コルーチンの引数は(BOOST_FUNCTION_MAX_ARGS-1)個までに制限されます。(つまり既定では9個まで)
まぁ、これはそれほど問題にならないでしょう。


やり残していた戻り値なしの場合にも対応しています。
とはいえ、R=voidで特殊化しているため、かなりコードが重複しています。(enable_ifでは対応できないはず)
引数と戻り値の処理以外は共通なので、もう少しうまく書けそうな感じです。


(09/07 0:33追記)
なんとか一つにまとまりました。
<hamigaki/coroutine/detail/coroutine_template.hpp>
下手にまとめない方が良かったような、、、。


TODO: