18 static_assert(std::is_default_constructible_v<NodeInfoT>);
22 std::shared_ptr<NodeInfoT> m_info;
23 std::shared_ptr<Node<NodeInfoT>> m_parent;
25 Node() : m_level(0), m_id(0), m_info(std::make_shared<NodeInfoT>()) {}
26 Node(NodeInfoT* t_ptr_to_info,
unsigned int t_id) : m_id(t_id), m_level(0), m_info(t_ptr_to_info) {}
30 m_level(t_parent.level() + 1),
31 m_info(t_ptr_to_info),
38 Node& operator=(
const Node&) =
default;
39 Node& operator=(
Node&&)
noexcept =
default;
45 [[nodiscard]]
unsigned int id()
const {
return m_id; }
47 [[nodiscard]]
unsigned int level()
const {
return m_level; }
49 [[nodiscard]]
const NodeInfoT& info()
const {
return *m_info; }
51 NodeInfoT& info() {
return *m_info; }
53 [[nodiscard]]
const Node<NodeInfoT>& parent()
const {
return *m_parent; }