Boost logo

Boost :

Subject: [boost] [Contract] noexcept and custom contract violation handlers
From: Andrzej Krzemienski (akrzemi1_at_[hidden])
Date: 2012-08-30 08:36:59


Hi,
I have just realized that there is an interesting interaction between
"noexcept" and Contract Programming framework. Not only Lorenzo's library,
but even if contracts were a language feature. N3248 ("noexcept prevents
library validation",
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3248.pdf)
recommends that functions with any preconditions should not be declared
noexcept(true) in case someone wants to report precondition failures via
exceptions. If preconditions become part of declaration syntax, declaring
both precondition and noexcept(true) could (and should?) be recognized as
compile-time error.

But now also invariants and postconditions come into play: if a function
declares a postcondition, or our class defines an invariant, should we be
allowed to declare our function noexcept? What if someone wants to report
an invariant or postcondition failure via special exception? (I do not have
a good answer for it.)

Regards,
&rzej


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk