unary_functionとbiary_functionの型パラメータは
なんで最後が戻り値の型なんでしょう

最初にあった方が直感的だと思うけど・・・