Given std::function is allowed to potentially allocate, these should be std::move'd to prevent potential reallocation (should that ever happen).