From 0f5865cef936d1c02e51e249eadff443a9c7a6b4 Mon Sep 17 00:00:00 2001 From: jstark <jstark@mpi-cbg.de> Date: Mon, 3 Jan 2022 14:45:23 +0100 Subject: [PATCH] Deducing type from property. --- .../HelpFunctionsForGrid.hpp | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/level_set/redistancing_Sussman/HelpFunctionsForGrid.hpp b/src/level_set/redistancing_Sussman/HelpFunctionsForGrid.hpp index 86e599f8..dc60da19 100644 --- a/src/level_set/redistancing_Sussman/HelpFunctionsForGrid.hpp +++ b/src/level_set/redistancing_Sussman/HelpFunctionsForGrid.hpp @@ -188,11 +188,12 @@ typename grid_type::stype get_smallest_spacing(grid_type & grid) * @return Double variable that contains the sum over all grid nodes of the difference between the value stored at \p * Prop1 and the value stored at \p Prop2. */ -template <size_t Prop1, size_t Prop2, typename prop_type, typename grid_type> -prop_type average_difference(grid_type & grid) +template <size_t Prop1, size_t Prop2, typename grid_type> +auto average_difference(grid_type & grid) { - prop_type total_diff = 0; auto dom = grid.getDomainIterator(); + typedef typename std::decay_t<decltype(grid.template get<Prop1>(dom.get()))> prop_type; + prop_type total_diff = 0; while (dom.isNext()) { auto key = dom.get(); @@ -209,11 +210,12 @@ prop_type average_difference(grid_type & grid) * @param grid Input OpenFPM grid. * @return Double variable that contains the maximum value of property \p Prop in \p grid. */ -template <size_t Prop, typename prop_type, typename grid_type> -prop_type get_max_val(grid_type & grid) +template <size_t Prop, typename grid_type> +auto get_max_val(grid_type & grid) { - prop_type max_value = std::numeric_limits<prop_type>::lowest(); auto dom = grid.getDomainIterator(); + typedef typename std::decay_t<decltype(grid.template get<Prop>(dom.get()))> prop_type; + prop_type max_value = std::numeric_limits<prop_type>::lowest(); while(dom.isNext()) { auto key = dom.get(); @@ -233,11 +235,12 @@ prop_type get_max_val(grid_type & grid) * @param grid Input OpenFPM grid. * @return Double variable that contains the minimum value of property \p Prop in \p grid. */ -template <size_t Prop, typename prop_type, typename grid_type> -prop_type get_min_val(grid_type & grid) +template <size_t Prop, typename grid_type> +auto get_min_val(grid_type & grid) { - prop_type min_value = std::numeric_limits<prop_type>::max(); auto dom = grid.getDomainIterator(); + typedef typename std::decay_t<decltype(grid.template get<Prop>(dom.get()))> prop_type; + prop_type min_value = std::numeric_limits<prop_type>::max(); while(dom.isNext()) { auto key = dom.get(); -- GitLab