Evaluate returns the proper std::function result
- changed likelihood template argument from <R, Args...> to <std::function<R(Args...)>> -> readability improvement