Is it a good practice to always define `value_type` when we define a template
<pre><code>template&lt;typename T&gt;
class Point
{
public:
    typedef T value_type;
    ...
};
</code></pre>

<p>I have seen above code in the <a href="http://rads.stackoverflow.com/amzn/click/059600298X">book, pp176</a>.</p>

<p><strong>Question1</strong>> Is it a good practice to always add the definition for <code>value_type</code>?</p>

<p><strong>Question2</strong>> Where this defined <code>value_type</code> will be used?</p>

<p>For example:</p>

<p><code>Point&lt;int&gt;::value_type</code>?</p>
