20 #include <type_traits>
23 namespace experimental {
41 template <tree_layout layout_v,
bool double_precision,
bool large_trees>
49 using index_type = std::conditional_t<double_precision, std::uint64_t, std::uint32_t>;
51 using metadata_type = std::conditional_t<large_trees, std::uint32_t, std::uint16_t>;
53 using offset_type = std::conditional_t<large_trees, std::uint32_t, std::uint16_t>;
55 auto static constexpr
const layout = layout_v;
70 std::variant<specialization_types<tree_layout::depth_first, false, false>,
std::variant< specialization_types< tree_layout::depth_first, false, false >, specialization_types< tree_layout::depth_first, false, true >, specialization_types< tree_layout::depth_first, true, false >, specialization_types< tree_layout::depth_first, true, true >, specialization_types< tree_layout::breadth_first, false, false >, specialization_types< tree_layout::breadth_first, false, true >, specialization_types< tree_layout::breadth_first, true, false >, specialization_types< tree_layout::breadth_first, true, true > > specialization_variant
Definition: specialization_types.hpp:77
Definition: dbscan.hpp:27
Definition: specialization_types.hpp:42
static constexpr auto const layout
Definition: specialization_types.hpp:55
std::conditional_t< large_trees, std::uint32_t, std::uint16_t > metadata_type
Definition: specialization_types.hpp:51
std::conditional_t< double_precision, std::uint64_t, std::uint32_t > index_type
Definition: specialization_types.hpp:49
static constexpr auto const is_double_precision
Definition: specialization_types.hpp:59
std::conditional_t< double_precision, double, float > threshold_type
Definition: specialization_types.hpp:45
std::conditional_t< large_trees, std::uint32_t, std::uint16_t > offset_type
Definition: specialization_types.hpp:53
static constexpr auto const has_large_trees
Definition: specialization_types.hpp:63