From 758ae808c0f527bfccd90cec8643dda5fbb60b94 Mon Sep 17 00:00:00 2001 From: Dmitry Anisimov Date: Thu, 30 Jul 2020 17:33:00 +0200 Subject: [PATCH] better use of declval --- Filtered_kernel/include/CGAL/Lazy.h | 22 +++++++++++----------- STL_Extension/include/CGAL/iterator.h | 8 +++++--- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/Filtered_kernel/include/CGAL/Lazy.h b/Filtered_kernel/include/CGAL/Lazy.h index f348718c544..33228d1a0fd 100644 --- a/Filtered_kernel/include/CGAL/Lazy.h +++ b/Filtered_kernel/include/CGAL/Lazy.h @@ -398,7 +398,7 @@ public: }; // Macro helpers to build the kernel objects -#define CGAL_PARAM(z, n, t) t##n() +#define CGAL_PARAM(z, n, t) std::declval() #define CGAL_TYPEMAP_AC(z, n, t) typedef typename Type_mapper< t##n, LK, AK >::type A##n; #define CGAL_TYPEMAP_EC(z, n, t) typedef typename Type_mapper< t##n, LK, EK >::type E##n; #define CGAL_LEXACT(z,n,t) CGAL::exact( l##n ) @@ -1486,10 +1486,10 @@ struct Lazy_construction_variant { operator()(const L1& l1, const L2& l2) const { typedef typename result::type result_type; - typedef decltype(std::declval()(typename Type_mapper::type(), - typename Type_mapper::type())) AT; - typedef decltype(std::declval()(typename Type_mapper::type(), - typename Type_mapper::type())) ET; + typedef decltype(std::declval()(std::declval::type>(), + std::declval::type>())) AT; + typedef decltype(std::declval()(std::declval::type>(), + std::declval::type>())) ET; CGAL_BRANCH_PROFILER(std::string(" failures/calls to : ") + std::string(CGAL_PRETTY_FUNCTION), tmp); Protect_FPU_rounding P; @@ -1534,12 +1534,12 @@ struct Lazy_construction_variant { operator()(const L1& l1, const L2& l2, const L3& l3) const { typedef typename result::type result_type; - typedef decltype(std::declval()(typename Type_mapper::type(), - typename Type_mapper::type(), - typename Type_mapper::type())) AT; - typedef decltype(std::declval()(typename Type_mapper::type(), - typename Type_mapper::type(), - typename Type_mapper::type())) ET; + typedef decltype(std::declval()(std::declval::type>(), + std::declval::type>(), + std::declval::type>())) AT; + typedef decltype(std::declval()(std::declval::type>(), + std::declval::type>(), + std::declval::type>())) ET; CGAL_BRANCH_PROFILER(std::string(" failures/calls to : ") + std::string(CGAL_PRETTY_FUNCTION), tmp); Protect_FPU_rounding P; diff --git a/STL_Extension/include/CGAL/iterator.h b/STL_Extension/include/CGAL/iterator.h index dec026e4a43..8395606f4b5 100644 --- a/STL_Extension/include/CGAL/iterator.h +++ b/STL_Extension/include/CGAL/iterator.h @@ -659,7 +659,8 @@ class Join_input_iterator_1 public: typedef typename std::iterator_traits::iterator_category iterator_category; - typedef std::decay_t()(arg_type()))> value_type; + typedef std::decay_t()(std::declval()))> + value_type; typedef typename std::iterator_traits::difference_type difference_type; typedef value_type const* pointer; typedef value_type const& reference; @@ -745,7 +746,8 @@ class Join_input_iterator_2 public: typedef typename std::iterator_traits::iterator_category iterator_category; - typedef decltype(std::declval()(arg_type_1(), arg_type_2())) value_type; + typedef decltype(std::declval()(std::declval(), std::declval())) + value_type; typedef typename std::iterator_traits::difference_type difference_type; typedef value_type* pointer; typedef value_type& reference; @@ -839,7 +841,7 @@ class Join_input_iterator_3 public: typedef typename std::iterator_traits::iterator_category iterator_category; - typedef decltype(std::declval()(arg_type_1(), arg_type_2(), arg_type_3())) + typedef decltype(std::declval()(std::declval(), std::declval(), std::declval())) value_type; typedef typename std::iterator_traits::difference_type difference_type; typedef value_type* pointer;