This takes inspiration from the standard nodiscard attribute, which can also be declared on individual constructors. (I have used this change locally for about a year on the LibreOffice code base, marking various compilers as warn_unused, without any positive or negative effects. Until I happened to notice an additional constructor that would benefit from warn_unused, and which found about 20 unused variables across the LibreOffice code base, see e.g., https://git.libreoffice.org/core/+/7cdbe504ff3b59d3aec1b1e86caf7f24223dce72%5E! "Fix what looks like copy/paste typos".)
(The changes in clang/test/Misc/pragma-attribute-strict-subjects.c, clang/test/Parser/pragma-attribute.cpp, and clang/test/Sema/pragma-attribute-strict-subjects.c are necessary to make those tests not fail after adding SubRuleForCXXConstructor to SubjectMatcherForFunction in clang/include/clang/Basic/Attr.td. It appears that the exact diagnostic output that is generated is somewhat brittle, depending on implementation details.)