added remark to implement friend ostream operator<<()
ctor Functor(Tpack&& ...) is evil; use functor(Tpack&& ...) instead