Added cover macro for arbitrary function and moved the macro to cover.hpp