title: Is it a good practice to always define `value_type` when we define a template
body: <pre><code>template&lt;typename T&gt;
  class Point
  {
  public:
      typedef T value_type;
      ...
  };
  </code></pre>
  
  <p>I have seen the above code in the book <a href="https://rads.stackoverflow.com/amzn/click/com/059600298X" rel="noreferrer" rel="nofollow noreferrer">"C++ in a Nutshell" by Ray Lischner, pp176</a>.</p>
  
  <p><strong>Questions:</strong></p>
  
  <ol>
  <li>Is it a good practice to always add the definition for <code>value_type</code>?</li>
  <li>Where will this defined <code>value_type</code> be used?</li>
  </ol>
  
  <p>For example: <code>Point&lt;int&gt;::value_type</code>?</p>