contract_violation
's special member functionsSection: 99 [support.contract.cviol] Status: NAD Submitter: Tim Song Opened: 2018-07-10 Last modified: 2019-08-05
Priority: 1
View all other issues in [support.contract.cviol].
View all issues with NAD status.
Discussion:
contract_violation
is currently defined as:
class contract_violation { public: uint_least32_t line_number() const noexcept; string_view file_name() const noexcept; string_view function_name() const noexcept; string_view comment() const noexcept; string_view assertion_level() const noexcept; };
which implies a full set of defaulted special member functions with entirely unclear semantics, and can arguably be read to imply that it is an aggregate.
It seems unlikely that we meant for users to default construct or copycontract_violation
objects, but if we did want to do that, we need to
at least specify the behavior of a default constructed contract_violation
object and how copying and moving work with respect to the lifetime of the
strings referenced by the string_view
s returned by its member functions.
[2018-11 Reflector prioritization]
Set Priority to 1
[2019 Cologne Wednesday night]
= delete
for copy/move assignment; Status to 'Open'; Daniel to provide wording
[Post Cologne Mailing]
Contracts were removed from the C++20 draft in Cologne; closing as NAD.
Proposed resolution: