title: C++ Template container with two template param, storing in template class's field
body: <pre><code>template&lt;class TNodeValue&gt;
  struct Node
  {
      Node* next;
      TNodeValue value; //need to store here TPair&lt;typename Tkey, typename Tvalue&gt;. Got C2512 error: no appropriate default consturctor available.
      Node();
      Node(TNodeValue _value);
  };
  template&lt;typename TNodeValue&gt;
  Node&lt;TNodeValue&gt;::Node()
  {
      next = NULL;
      value = NULL;
  }
  template&lt;typename TNodeValue&gt;
  Node&lt;TNodeValue&gt;::Node(TNodeValue _value)
  {
      next = NULL;
      value = _value;
  }
  </code></pre>
  
  <p>TPair code:</p>
  
  <pre><code>template &lt;typename Tkey, typename Tvalue&gt;
  struct TPair
  {
      Tkey key;
      Tvalue value;
  
      TPair(Tkey _key, Tvalue _value)
      {
          key = _key;
          value = _value;
      }
  
  };
  </code></pre>
  
  <p>Code to call error:</p>
  
  <pre><code>TPair&lt;int, int&gt; a(1, 2);
  Node&lt;TPair&lt;int, int&gt; &gt; node(a);
  </code></pre>
  
  <p>The question is why does it won't to be stored? Why TNodeValue can't store something like TPair? Got C2512 error. 
  IMPORTANT: Don't use std lib.</p>