a function call expression ([expr.call])
that calls a function declared nodiscard in a reachable declaration or
whose return type is a nodiscard type, or
an explicit type
conversion ([expr.type.conv], [expr.static.cast], [expr.cast])
that constructs an object through
a constructor declared nodiscard in a reachable declaration, or
that initializes an object of a nodiscard type.
Recommended practice: Appearance of a nodiscard call as
a potentially-evaluated discarded-value expression ([expr.prop])
is discouraged unless explicitly cast to void.
Implementations should issue a warning in such cases.
The value of
a has-attribute-expression for the nodiscard attribute
should be 0 unless the implementation can issue such warnings.