On Wednesday, 16 September 2015 at 14:34:05 UTC, Ola Fosheim
Grøstad wrote:
On Wednesday, 16 September 2015 at 10:31:58 UTC, Idan Arye
wrote:
What's wrong with two `open()`s in a row? Each will return a
new file handle.
Yes, but if you do it by mistake then you don't get the
compiler to check that you call close() on both. I should have
written "what if you forget close()". Will the compiler then
complain at compile time?
You can't make that happen with just move semantics, you need
linear typing so that every resource created are consumed
exactly once.
Move semantics should be enough. We can declare the destructor
private, and then any code outside the module that implicitly
calls the d'tor when the variable goes out of scope will raise a
compilation error. In order to "get rid" of the variable, you'll
have to pass ownership to the `close` function, so your code
won't try to implicitly call the d'tor.