[libcxx-commits] [PATCH] D128267: [libc++] Enable [[nodiscard]] extensions by default
Louis Dionne via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Thu Aug 25 09:42:26 PDT 2022
ldionne requested changes to this revision.
ldionne added inline comments.
This revision now requires changes to proceed.
================
Comment at: libcxx/docs/UsingLibcxx.rst:343
For this reason libc++ provides an extension that does just that! The
-extension must be enabled by defining ``_LIBCPP_ENABLE_NODISCARD_EXT``. The extended
+extension is enabled by default and can be disabled by defining ``_LIBCPP_DISABLE_NODISCARD_EXT``. The extended
applications of ``[[nodiscard]]`` takes two forms:
----------------
Let's break the line here.
================
Comment at: libcxx/include/__config:868
-# if _LIBCPP_STD_VER > 17 || defined(_LIBCPP_ENABLE_NODISCARD_EXT)
+# if _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_DISABLE_NODISCARD_EXT)
# define _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_NODISCARD
----------------
I think this is what we mean:
1. In C++20, always mark those things required by the standard as nodiscard
2. In < C++20, always mark as nodiscard unless the user has opted out by defining `_LIBCPP_DISABLE_NODISCARD_EXT`.
================
Comment at: libcxx/include/__config:871
# else
# define _LIBCPP_NODISCARD_AFTER_CXX17
# endif
----------------
(not attached to any particular line)
I think we need to go through all of our tests for `nodiscard`. Many of them will currently be marked as `// UNSUPPORTED: c++03, c++11, c++14`. Instead, they should be changed to: `// UNSUPPORTED: (c++03 || c++11 || c++14) && !stdlib=libc++` so that we gain coverage for this newly added behavior.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D128267/new/
https://reviews.llvm.org/D128267
More information about the libcxx-commits
mailing list