algorithms: added cnv::apply with templated op()