better use of declval

This commit is contained in:
Dmitry Anisimov 2020-07-30 17:33:00 +02:00
parent ad813b4cb0
commit 758ae808c0
2 changed files with 16 additions and 14 deletions

View File

@ -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<t##n>()
#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<Lazy_construction_variant(L1, L2)>::type result_type;
typedef decltype(std::declval<AC>()(typename Type_mapper<L1, LK, AK>::type(),
typename Type_mapper<L2, LK, AK>::type())) AT;
typedef decltype(std::declval<EC>()(typename Type_mapper<L1, LK, EK>::type(),
typename Type_mapper<L2, LK, EK>::type())) ET;
typedef decltype(std::declval<AC>()(std::declval<typename Type_mapper<L1, LK, AK>::type>(),
std::declval<typename Type_mapper<L2, LK, AK>::type>())) AT;
typedef decltype(std::declval<EC>()(std::declval<typename Type_mapper<L1, LK, EK>::type>(),
std::declval<typename Type_mapper<L2, LK, EK>::type>())) ET;
CGAL_BRANCH_PROFILER(std::string(" failures/calls to : ") + std::string(CGAL_PRETTY_FUNCTION), tmp);
Protect_FPU_rounding<Protection> P;
@ -1534,12 +1534,12 @@ struct Lazy_construction_variant {
operator()(const L1& l1, const L2& l2, const L3& l3) const {
typedef typename result<Lazy_construction_variant(L1, L2, L3)>::type result_type;
typedef decltype(std::declval<AC>()(typename Type_mapper<L1, LK, AK>::type(),
typename Type_mapper<L2, LK, AK>::type(),
typename Type_mapper<L3, LK, AK>::type())) AT;
typedef decltype(std::declval<EC>()(typename Type_mapper<L1, LK, EK>::type(),
typename Type_mapper<L2, LK, EK>::type(),
typename Type_mapper<L3, LK, EK>::type())) ET;
typedef decltype(std::declval<AC>()(std::declval<typename Type_mapper<L1, LK, AK>::type>(),
std::declval<typename Type_mapper<L2, LK, AK>::type>(),
std::declval<typename Type_mapper<L3, LK, AK>::type>())) AT;
typedef decltype(std::declval<EC>()(std::declval<typename Type_mapper<L1, LK, EK>::type>(),
std::declval<typename Type_mapper<L2, LK, EK>::type>(),
std::declval<typename Type_mapper<L3, LK, EK>::type>())) ET;
CGAL_BRANCH_PROFILER(std::string(" failures/calls to : ") + std::string(CGAL_PRETTY_FUNCTION), tmp);
Protect_FPU_rounding<Protection> P;

View File

@ -659,7 +659,8 @@ class Join_input_iterator_1
public:
typedef typename std::iterator_traits<I1>::iterator_category iterator_category;
typedef std::decay_t<decltype(std::declval<Op>()(arg_type()))> value_type;
typedef std::decay_t<decltype(std::declval<Op>()(std::declval<arg_type>()))>
value_type;
typedef typename std::iterator_traits<I1>::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<I1>::iterator_category iterator_category;
typedef decltype(std::declval<Op>()(arg_type_1(), arg_type_2())) value_type;
typedef decltype(std::declval<Op>()(std::declval<arg_type_1>(), std::declval<arg_type_2>()))
value_type;
typedef typename std::iterator_traits<I1>::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<I1>::iterator_category iterator_category;
typedef decltype(std::declval<Op>()(arg_type_1(), arg_type_2(), arg_type_3()))
typedef decltype(std::declval<Op>()(std::declval<arg_type_1>(), std::declval<arg_type_2>(), std::declval<arg_type_3>()))
value_type;
typedef typename std::iterator_traits<I1>::difference_type difference_type;
typedef value_type* pointer;