@@ -142,11 +142,14 @@ template <typename T_bool, typename T_true, typename T_false,
142142 require_all_stan_scalar_t <T_true, T_false>* = nullptr >
143143inline auto select (T_bool&& c, const T_true& y_true, const T_false& y_false) {
144144 using ret_t = return_type_t <T_true, T_false>;
145- return make_holder ([y_true, y_false](auto && c_) {
146- return std::forward<decltype (c_)>(c_).unaryExpr ([y_true, y_false](bool cond) {
147- return cond ? ret_t (y_true) : ret_t (y_false);
148- });
149- }, std::forward<T_bool>(c));
145+ return make_holder (
146+ [y_true, y_false](auto && c_) {
147+ return std::forward<decltype (c_)>(c_).unaryExpr (
148+ [y_true, y_false](bool cond) {
149+ return cond ? ret_t (y_true) : ret_t (y_false);
150+ });
151+ },
152+ std::forward<T_bool>(c));
150153}
151154
152155/* *
@@ -169,17 +172,25 @@ inline auto select(T_bool&& c, T_true&& y_true, T_false&& y_false) {
169172 " right hand side" , y_false);
170173 using ret_t = return_type_t <T_true, T_false>;
171174 if constexpr (!std::is_same_v<std::decay_t <T_true>, std::decay_t <T_false>>) {
172- return make_holder ([](auto && c_, auto && y_true_, auto && y_false_) {
173- return std::forward<decltype (c_)>(c_).select (
174- std::forward<decltype (y_true_)>(y_true_),
175- std::forward<decltype (y_false_)>(y_false_));
176- }, std::forward<T_bool>(c), std::forward<T_true>(y_true), std::forward<T_false>(y_false));
175+ return make_holder (
176+ [](auto && c_, auto && y_true_, auto && y_false_) {
177+ return std::forward<decltype (c_)>(c_).select (
178+ std::forward<decltype (y_true_)>(y_true_),
179+ std::forward<decltype (y_false_)>(y_false_));
180+ },
181+ std::forward<T_bool>(c), std::forward<T_true>(y_true),
182+ std::forward<T_false>(y_false));
177183 } else {
178- return make_holder ([](auto && c_, auto && y_true_, auto && y_false_) {
179- return std::forward<decltype (c_)>(c_).select (std::forward<decltype (y_true_)>(y_true_),
180- std::forward<decltype (y_false_)>(y_false_)).template cast <ret_t >();
181- }, std::forward<T_bool>(c), std::forward<T_true>(y_true), std::forward<T_false>(y_false));
182- }
184+ return make_holder (
185+ [](auto && c_, auto && y_true_, auto && y_false_) {
186+ return std::forward<decltype (c_)>(c_)
187+ .select (std::forward<decltype (y_true_)>(y_true_),
188+ std::forward<decltype (y_false_)>(y_false_))
189+ .template cast <ret_t >();
190+ },
191+ std::forward<T_bool>(c), std::forward<T_true>(y_true),
192+ std::forward<T_false>(y_false));
193+ }
183194}
184195} // namespace math
185196} // namespace stan
0 commit comments