Create CGAL::make_filled_array

That function template will replace my adhoc
`create_array_of_triangulation`.
This commit is contained in:
Laurent Rineau 2021-02-03 21:50:10 +01:00
parent cbc73a8fc4
commit 8dbf50a94b
2 changed files with 17 additions and 14 deletions

View File

@ -18,6 +18,7 @@
#else
# include <boost/array.hpp>
#endif
#include <utility>
namespace CGAL {
@ -68,6 +69,19 @@ struct Construct_array
}
};
template <std::size_t...Is, typename T>
constexpr std::array<T, sizeof...(Is)>
make_filled_array_aux(const T& value, std::index_sequence<Is...>)
{
return {(static_cast<void>(Is), value)...};
}
template <std::size_t N, typename T>
constexpr std::array<T, N> make_filled_array(const T& value)
{
return make_filled_array_aux(value, std::make_index_sequence<N>());
}
} //namespace CGAL
#endif // CGAL_ARRAY_H

View File

@ -51,6 +51,7 @@
#include <boost/mpl/if.hpp>
#include <array>
#include <CGAL/array.h>
#endif //CGAL_TRIANGULATION_3_DONT_INSERT_RANGE_OF_POINTS_WITH_INFO
@ -92,18 +93,6 @@ public:
private:
template <std::size_t...Is>
constexpr std::array<Tr_Base, sizeof...(Is)>
make_array_of_triangulations(const Geom_traits& traits, std::index_sequence<Is...>)
{
return {{(static_cast<void>(Is), traits)...}};
}
template <std::size_t N>
constexpr std::array<Tr_Base, N> create_array_of_triangulation(const Geom_traits& traits)
{
return make_array_of_triangulations(traits, std::make_index_sequence<N>());
}
void init_hierarchy() {
hierarchy[0] = this;
for(int i=1; i<maxlevel; ++i)
@ -140,7 +129,7 @@ public:
Triangulation_hierarchy_3(InputIterator first, InputIterator last,
const Geom_traits& traits = Geom_traits())
: Tr_Base(traits)
, hierarchy_triangulations(create_array_of_triangulation<maxlevel-1>(traits))
, hierarchy_triangulations(make_filled_array<maxlevel-1, Tr_Base>(traits))
{
init_hierarchy();
insert(first, last);
@ -465,7 +454,7 @@ template <class Tr >
Triangulation_hierarchy_3<Tr>::
Triangulation_hierarchy_3(const Geom_traits& traits)
: Tr_Base(traits)
, hierarchy_triangulations(create_array_of_triangulation<maxlevel-1>(traits))
, hierarchy_triangulations(make_filled_array<maxlevel-1, Tr_Base>(traits))
{
init_hierarchy();
}