44    [[gnu::always_inline]] 
void eval_hess_ψ_prod(
crvec x, 
crvec y, 
crvec Σ, 
real_t scale, 
crvec v, 
rvec Hv) 
const requires requires { &std::remove_cvref_t<Problem>::eval_hess_ψ_prod; } { ++
evaluations->hess_ψ_prod; 
return timed(
evaluations->time.hess_ψ_prod, [&] { return problem.eval_hess_ψ_prod(x, y, Σ, scale, v, Hv); }); }
 
   52    [[gnu::always_inline]] 
void eval_grad_ψ(
crvec x, 
crvec y, 
crvec Σ, 
rvec grad_ψ, 
rvec work_n, 
rvec work_m) 
const requires requires { &std::remove_cvref_t<Problem>::eval_grad_ψ; } { ++
evaluations->grad_ψ; 
return timed(
evaluations->time.grad_ψ, [&] { return problem.eval_grad_ψ(x, y, Σ, grad_ψ, work_n, work_m); }); }
 
   53    [[gnu::always_inline]] 
real_t eval_ψ_grad_ψ(
crvec x, 
crvec y, 
crvec Σ, 
rvec grad_ψ, 
rvec work_n, 
rvec work_m) 
const requires requires { &std::remove_cvref_t<Problem>::eval_ψ_grad_ψ; } { ++
evaluations->ψ_grad_ψ; 
return timed(
evaluations->time.ψ_grad_ψ, [&] { return problem.eval_ψ_grad_ψ(x, y, Σ, grad_ψ, work_n, work_m); }); }
 
   85    std::shared_ptr<EvalCounter> 
evaluations = std::make_shared<EvalCounter>();
 
   95    template <
class... 
Args>
 
   97        requires(!std::is_lvalue_reference_v<Problem>)
 
 
  110    template <
class TimeT, 
class FunT>
 
  113        return std::forward<FunT>(f)();