Variable `res` is declared [here](https://github.com/astro-informatics/sopt/blob/203106724c9b05e7a5d362a21349ef1864f42301/cpp/sopt/l1_proximal.h#L344), and then shadowed within the loop again [here](https://github.com/astro-informatics/sopt/blob/203106724c9b05e7a5d362a21349ef1864f42301/cpp/sopt/l1_proximal.h#L355). ```cpp Vector<Scalar> const res = Psi().adjoint() * out; // outer variable declaration here Vector<Scalar> u_l1 = 1e0 / nu() * (res - apply_soft_threshhold(gamma, res)); apply_constraints(out, x - Psi() * u_l1); // Move on to other iterations for (++niters; niters < itermax() or itermax() == 0; ++niters) { auto const do_break = breaker(objective(x, out, gamma)); SOPT_LOW_LOG(" - [ProxL1] iter {}, prox_fval = {}, rel_fval = {}", niters, breaker.current(), breaker.relative_variation()); if (do_break) break; Vector<Scalar> const res = u_l1 * nu() + Psi().adjoint() * out; // shadow variable declaration here ```