title: Difference between std::remove and boost::filesystem::remove?
body: <p>In the C++17 filesystem library, we got <code>std::filesystem::remove(path)</code>, which — as I understand it — is a direct port of <code>boost::filesystem::remove(path)</code> from Boost.Filesystem.</p>
  
  <p>But C++ inherited from C89 a very similar function called <code>std::remove(path)</code>, which is <em>also</em> documented as a way to remove a file from the filesystem. I'm vaguely aware of some pitfalls with this function, e.g. I believe I have heard that on Windows <code>std::remove</code> cannot be used to remove a file that is still being held open by the current process.</p>
  
  <p>Does <code>std::filesystem::remove</code> fix these issues with <code>std::remove</code>?  Should I prefer <code>std::filesystem::remove</code> over <code>std::remove</code>? Or is the former just a namespaced synonym for the latter, with the same warts and pitfalls?</p>
  
  <p>The title of my question asks for the difference between <code>boost::filesystem::remove(path)</code> and <code>std::remove(path)</code> because I figure that <code>std::filesystem::remove(path)</code> may not have been implemented by a lot of library vendors yet, but my understanding is that it's supposed to be basically a direct copy of the Boost version. So if you know about Boost.Filesystem on Windows, you probably know enough to answer this question too.</p>