The class contract_violation
defines the type of objects used to represent
a contract violation that has been detected
during the evaluation of a contract assertion
with a particular evaluation semantic ([basic.contract.eval]).
Objects of this type can
be created only by the implementation.
It is
implementation-defined
whether the destructor is virtual.
Recommended practice: The string returned
should contain a textual representation
of the predicate of the violated contract assertion
or an empty string if
storing a textual representation is undesired.
Recommended practice: The value returned should be
a default constructed source_location object
or a value identifying the violated contract assertion: