title: Why does checked_array_iterator work without including <iterator> in VS2013 but fails in VS2017?
body: <p>Given the following code:</p>
  
  <pre><code>#include &lt;memory&gt;
  #include &lt;locale&gt;
  
  int main() {
      auto source = std::make_unique&lt;int[]&gt;(16);
      auto dest = std::make_unique&lt;int[]&gt;(16);
      auto dp = stdext::checked_array_iterator&lt;int*&gt;(dest.get(), 16);
      std::copy_n(source.get(), 16, dp);
      return 0;
  }
  </code></pre>
  
  <p>It compiles cleanly on Visual Studio 2013 by running <code>cl.exe /EHsc &lt;file&gt;.cpp</code>. However, on Visual Studio 2017 the following errors (among others) are thrown by <code>cl.exe</code>:</p>
  
  <pre><code>vc12.cpp(7): error C2653: 'stdext': is not a class or namespace name
  vc12.cpp(7): error C2065: 'checked_array_iterator': undeclared identifier
  </code></pre>
  
  <p>Why does this code no longer compile?</p>