
On Fri, May 06, 2005 at 03:46:44PM +0300, Peter Dimov wrote:
Beman Dawes wrote:
On a POSIX system that would work well. But what happens on a non-POSIX system? The E* macros won't be defined in <cerrno>. How will the user get access to them? Are you suggesting they be defined in one of the filesystem headers? I don't see how that would work.
I am suggesting that they shall be defined in <cerrno>.
If this doesn't seem acceptable to you, I am not opposed to the filesystem library defining its own aliases of all applicable E* constants. If this is the case, I am suggesting that there shall be an 1:1 mapping of aliases to E* names and that the aliases shall have the same value as the corresponding E* names.
That's what I'd assumed you meant, so that if you're on a POSIX platform and are familiar with the E* symbolic names you can compare the Boost.Filesystem error code to ENOENT etc. If you don't have the E* names defined, or don't want to use them, you can use the corresponding Boost.Filesystem constant. Either way, the value's the same, so it's purely a matter of style. This would be consistent with the equality of std::char_traits<char>::eof() and EOF, and between std::numeric_limits<int>::max() and INT_MAX. jon