title: Does "std::size_t" make sense in C++?
body: <p>In some code I've inherited, I see frequent use of <code>size_t</code> with the <code>std</code> namespace qualifier.  For example:</p>
  
  <pre><code>std::size_t n = sizeof( long );
  </code></pre>
  
  <p>It compiles and runs fine, of course.  But it seems like bad practice to me (perhaps carried over from C?).</p>
  
  <p>Isn't it true that <code>size_t</code> is built into C++ and therefore in the global namespace?  Is a header file include needed to use <code>size_t</code> in C++?</p>
  
  <p>Another way to ask this question is, would the following program (with <em>no</em> includes) be expected to <em>compile</em> on all C++ compilers?</p>
  
  <pre><code>size_t foo()
  {
      return sizeof( long );
  }
  </code></pre>