<div dir="ltr"><div dir="ltr"><div>Hello, Chris, all.</div><div><br></div><div>I agree that it would be a good idea to move away from "_LIBCPP_NODISCARD_EXT". All of our supported compilers have a flag to disable "[[nodiscard]]", which is probably a better thing for people to use than this inconsistent configuration macro. I also doubt that we have any configuration that tests with this. </div><div><br></div><div>Thanks.</div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, May 13, 2021 at 10:47 AM Christopher Di Bella via libcxx-dev <<a href="mailto:libcxx-dev@lists.llvm.org">libcxx-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Hi folks,</div><div><br></div><div>There's been a lot of requests for `<span style="font-family:monospace">[[nodiscard]]</span>` to be replaced with `<span style="font-family:monospace">_LIBCPP_NODISCARD_EXT`</span> in recent reviews where the standard doesn't explicitly declare an entity with the nodiscard attribute. After some investigation, I've discovered that this feature is confusing and error-prone.<span style="font-family:monospace"> `_LIBCPP_NODISCARD_EXT</span>` is opt-in, which requires users to know about its existence (I certainly didn't until reviewers started asking for it, and even then, didn't expect it to be opt-in), and then has three ways to opt out of its use: <span style="font-family:monospace">`_LIBCPP_DISABLE_NODISCARD_EXT</span>` (global), `<span style="font-family:monospace">-Wno-unused-result</span>` (global), and cast to `<span style="font-family:monospace">void</span>` (local).<br></div><div><br></div><div>Since It's unclear why we want so many toggle options for this feature, <a href="http://eel.is/c++draft/dcl.attr.nodiscard" target="_blank">this attribute doesn't change a user's program</a>, and users already have two <a href="https://godbolt.org/z/hsWo1v5W9" target="_blank">compiler-based opt-out mechanisms</a> for all supported compilers and C++ standards, I think it's reasonable to remove this attribute in favour of the easier-to-use attribute itself.<br></div><div><br></div><div>Kind regards,</div><div><br></div><div>Christopher Di Bella<br></div></div>
_______________________________________________<br>
libcxx-dev mailing list<br>
<a href="mailto:libcxx-dev@lists.llvm.org" target="_blank">libcxx-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/libcxx-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/libcxx-dev</a><br>
</blockquote></div>