title: does this struct need a non-default constructor
body: <p>I have the following <code>struct</code> in C++, and I wondered if I need to define a non-default constructor for it when I use it as follows: <code>boost::shared_ptr&lt;node&gt; p_node = boost:shared_ptr&lt;node&gt;();</code></p>
  
  <pre><code>struct node
  {
      std::string name;
      std::map&lt;std::string, std::vector&lt;variant&gt; &gt; values; // it is possible that nodes contain as a value, key/value pairs so we need a map
  
      NodeType type;  //Enum
  
      typedef struct attrib
      {
          std::string key;
          variant value;  //Boost::variant
      };
  
      std::vector&lt;attrib&gt; attributes;
  
      boost::shared_ptr&lt;node&gt; childnode;
  };
  </code></pre>