more tests and a bugfix

This commit is contained in:
Sébastien Loriot 2021-09-01 11:16:40 +02:00
parent 0e730466ef
commit b4cbfc7b5c
2 changed files with 17 additions and 3 deletions

View File

@ -210,9 +210,8 @@ get_parameter_reference_impl(Named_params_impl<std::reference_wrapper<T>, Tag, N
return np.v.get();
};
template <typename T, typename Tag, typename Base, typename Query_tag>
typename Get_param<Named_params_impl<T, Tag, Base>, Query_tag>::type
typename Get_param<Named_params_impl<T, Tag, Base>, Query_tag>::reference
get_parameter_reference_impl(Named_params_impl<T, Tag, Base>& np, Query_tag tag)
{
CGAL_static_assertion( (!boost::is_same<Query_tag, Tag>::value) );

View File

@ -61,6 +61,12 @@ void test_references(const NamedParameters& np)
Visitor_reference_type vis_ref = params::choose_parameter(params::get_parameter_reference(np, inp::visitor), default_value);
CGAL_USE(vis_ref);
// std::reference_wrapper of const
typedef typename inp::Lookup_named_param_def<inp::face_index_t, NamedParameters, Default_type>::reference FIM_reference_type;
static_assert(std::is_same<const B&, FIM_reference_type>::value);
FIM_reference_type fim_ref = params::choose_parameter(params::get_parameter_reference(np, inp::face_index), default_value);
CGAL_USE(fim_ref);
// non-copyable
typedef typename inp::Lookup_named_param_def<inp::vertex_point_t, NamedParameters, Default_type>::reference VPM_reference_type;
static_assert(std::is_same<const B&, VPM_reference_type>::value);
@ -72,6 +78,12 @@ void test_references(const NamedParameters& np)
static_assert(std::is_same<A<0>&, VIM_reference_type>::value);
VIM_reference_type vim_ref = params::choose_parameter(params::get_parameter_reference(np, inp::vertex_index), default_value);
CGAL_USE(vim_ref);
// default
typedef typename inp::Lookup_named_param_def<inp::edge_index_t, NamedParameters, Default_type>::reference EIM_reference_type;
static_assert(std::is_same<Default_type&, EIM_reference_type>::value);
EIM_reference_type eim_ref = params::choose_parameter(params::get_parameter_reference(np, inp::edge_index), default_value);
assert(&eim_ref==&default_value);
}
int main()
@ -83,6 +95,9 @@ int main()
test_references(params::visitor(std::ref(b))
.vertex_point_map(b)
.vertex_index_map(A<0>(0)));
.vertex_index_map(A<0>(0))
.face_index_map(std::reference_wrapper<const B>(b))
);
return EXIT_SUCCESS;
}