std::tuple縛りから脱出した

invoke追加
cat修正、それに伴いstd::tuple以外が使えるように
その他小さな修正