Thoughts about functions more dynamic than std::function