#include <memory>

template <typename T>
class m_Mono_directional_node
{
public:
    m_Mono_directional_node(const T &_data,
                            std::shared_ptr<m_Mono_directional_node<T>> _next = nullptr):
        data(_data),
        next(_next)
    {}

    ~m_Mono_directional_node(){}

    void set_data(const T &_newdata) { data = _newdata;}
    T get_data() {return data;}

    void set_next(std::shared_ptr<m_Mono_directional_node<T>> _newnext) {next = _newnext;}
    std::shared_ptr<m_Mono_directional_node<T>> get_next() {return next;}


protected:
private:
    std::shared_ptr<m_Mono_directional_node<T>> next;
    T data;

};
