diff --git a/dune/solvers/common/algorithm.hh b/dune/solvers/common/algorithm.hh index 20532fcf7a6f954a59e0a58b5c83a860387f578b..1c4a6593ce0fe2820a0eefabe82d1a9658f37102 100644 --- a/dune/solvers/common/algorithm.hh +++ b/dune/solvers/common/algorithm.hh @@ -300,22 +300,22 @@ namespace Imp { template<class IfFunc, class ElseFunc> constexpr void ifElse(std::true_type, IfFunc&& ifFunc, ElseFunc&& elseFunc) { - ifFunc([](auto&& x) { return std::forward<decltype(x)>(x);}); + ifFunc([](auto&& x) -> decltype(auto) { return std::forward<decltype(x)>(x);}); } template<class IfFunc, class ElseFunc> constexpr void ifElse(std::false_type, IfFunc&& ifFunc, ElseFunc&& elseFunc) { - elseFunc([](auto&& x) { return std::forward<decltype(x)>(x);}); + elseFunc([](auto&& x) -> decltype(auto) { return std::forward<decltype(x)>(x);}); } template<class IfFunc, class ElseFunc> constexpr void ifElse(const bool& condition, IfFunc&& ifFunc, ElseFunc&& elseFunc) { if (condition) - ifFunc([](auto&& x) { return std::forward<decltype(x)>(x);}); + ifFunc([](auto&& x) -> decltype(auto) { return std::forward<decltype(x)>(x);}); else - elseFunc([](auto&& x) { return std::forward<decltype(x)>(x);}); + elseFunc([](auto&& x) -> decltype(auto) { return std::forward<decltype(x)>(x);}); } } // namespace Imp