From: David Abrahams (dave_at_[hidden])
Date: 2007-08-22 22:10:58
on Wed Aug 22 2007, "Peter Dimov" <pdimov-AT-pdimov.com> wrote:
> Howard Hinnant wrote:
>> On Aug 22, 2007, at 7:14 PM, David Abrahams wrote:
>>> The reason is, "Peter said so." In other words, if you accept Peter's
>>> modification, the contract says "if you construct it this way, it's a
>>> logic error to use it that way."
>>> I don't see a problem with that.
>> Ok, so what if Howard says: If you construct it this way, it's a run
>> time error to use it the that way. Is that statement in any way more
>> or less correct?
> Howard actually says that using it that way results in an exception, and
> this statement isn't more or less correct. It's just different.
If we can compare the correcness of those two contracts at all, the
correctness of throwing depends on whether there's a use case that can
reasonably recover. As far as I can tell, there's no realistic
scenario in which it's not a programming error (so far the best we've
come up with is "the user selects the mutex via std::cin"), and you
can't really recover from programming errors at runtime.
It's all in this thread: http://tinyurl.com/2ph58t
-- Dave Abrahams Boost Consulting http://www.boost-consulting.com The Astoria Seminar ==> http://www.astoriaseminar.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk