inline void swap(function<Signature>& f1, function<Signature>& f2) { f1.swap(f2); }
inline void swap(function<Signature, Allocator>& f1, function<Signature, Allocator>& f2) { f1.swap(f2); }