I'm not convinced with the `no_unique_address` example. As any other attribute, it's optional and doesn't affect the meaning of the program. It sounds like an error to write a code which relies on an observable behavior change caused by any attribute. P1774R8
also discussed a bit about potential observable changes caused by `[[assume]]`.
With such a feature, should we introduce a set of attributes which can and cannot be required? Like, is it legal to write `[[!nodiscard]]`?
Maybe there's a space for a similar mechanism in the language but I would not call it "required attributes" because it's just contradictory to the current meaning of attributes.