[Bug libstdc++/59687] The description of ios::noreplace is hilarious
giecrilj at stegny dot 2a.pl
gcc-bugzilla@gcc.gnu.org
Sat Jan 11 12:30:00 GMT 2014
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59687
Christopher Yeleighton <giecrilj at stegny dot 2a.pl> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|RESOLVED |UNCONFIRMED
Resolution|FIXED |---
--- Comment #4 from Christopher Yeleighton <giecrilj at stegny dot 2a.pl> ---
(In reply to Jonathan Wakely from comment #2)
> Author: redi
> Date: Fri Jan 10 14:30:27 2014
> New Revision: 206525
> trunk/libstdc++-v3/doc/xml/manual/backwards_compatibility.xml
You:
Because iostream modes correspond
to <function>fopen(3)</function> modes these flags are not supported.
Me:
The implication is 1⇒1, so this is formally valid. But correlation is not
causation; in this case, you have (fopen (path, "wx")) both implemented in GNU
and standardised. So your statement is misleading, at least for (noreplace).
You:
If you need
to check for existence and open a file as a single operation then you will
need to use OS-specific facilities outside the C++ standard library, such
as <function>open(2)</function>
Me:
Maybe it would be worth mentioning how you can construct a stream from a file
descriptor so as to avoid a resource leak (the constructor must not throw for
this scheme to work).
It seems (noreplace) is more important in practice than (nocreate). Now that
it is standardised, could you consider providing (__noreplace) instead?
See also <URL:
https://groups.google.com/a/isocpp.org/d/msg/std-proposals/I5z9QIo7KHU/D3eC_NRlMjMJ
>
Meta:
I admit the bug is sort-of fixed but still I tentatively reopen to see if you
would reconsider the text given the remarks above. Please forgive me if it is
too much disruption for you.
More information about the Gcc-bugs
mailing list