17namespace sequoia::maths
29 using size_type = std::size_t;
31 using heterogeneous_nodes_type = std::tuple<Ts...>;
35 template<
class... Args>
41 constexpr std::size_t size()
const noexcept
43 return std::tuple_size_v<std::tuple<Ts...>>;
46 template<std::
size_t I>
48 constexpr const auto& get_node_weight()
const noexcept
50 return std::get<I>(m_Weights);
55 constexpr const auto& get_node_weight()
const noexcept
57 return std::get<T>(m_Weights);
60 template<std::
size_t I,
class W>
61 constexpr void set_node_weight(W w)
63 std::get<I>(m_Weights) = std::move(w);
66 template<
class T,
class W>
67 constexpr void set_node_weight(W w)
69 std::get<T>(m_Weights) = std::move(w);
72 template<std::
size_t I,
class Fn>
73 constexpr decltype(
auto) mutate_node_weight(Fn fn)
75 return fn(std::get<I>(m_Weights));
78 template<
class T,
class Fn>
79 constexpr decltype(
auto) mutate_node_weight(Fn fn)
81 return fn(std::get<T>(m_Weights));
100 std::tuple<Ts...> m_Weights;
Definition: HeterogeneousNodeStorage.hpp:27
Storage for heterogeneous node weights.
Definition: HeterogeneousNodeStorage.hpp:23