On Mon, 19 Dec 2022 at 13:11, Bo Persson via Std-Proposals <std-proposals@lists.isocpp.org> wrote:
On 2022-12-19 at 12:32, S├ębastien Bini via Std-Proposals wrote:

> With the updated rules, if std::pair has the
> [[no_parameter_reloc(auto)]]attribute, then std::pair<MyString,int>
> opts-out, while std::pair<MyString,UserDefinedOptInType> opts-in.
> I am also thinking of allowing a function attribute to opt-out on
> function level for tricky cases.
> Anyone have some thoughts on the matter?

At least originally, there was a basic idea that ignoring an attribute
should not affect the validity of a program. Like [[nodiscard]] and
[[maybe_unused]] would affect warnings, but not the generated code.

Adding ABI-modifying attributes seems to be totally contrary to this.

Modifying ABI does not affect the validity of a program; since ABI is unspecified, a sufficiently perverse compiler could use a different ABI on each execution.