[libcxx-commits] [PATCH] D65900: [libc++] Use [[nodiscard]] for lock_guard, as an extension

Louis Dionne via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Thu Aug 8 13:03:57 PDT 2019


ldionne marked an inline comment as done.
ldionne added inline comments.


================
Comment at: libcxx/include/__config:1016
+   // Standard specifies the constructor as [[nodiscard]]
+#  define _LIBCPP_NODISCARD_CTOR _LIBCPP_NODISCARD
+
----------------
xbolva00 wrote:
> EricWF wrote:
> > What happens when we apply this attribute to a constructor with a compiler that doesn't yet support it?
> > 
> > Does the warning escape the system header?
> If compiler returns >= 201907L, it have to support nodiscard on ctors.
> 
> Hopefully no compiler just bumps it to 201907L and does not support it.
> What happens when we apply this attribute to a constructor with a compiler that doesn't yet support it?

```
<stdin>:2:14: warning: attribute 'nodiscard' cannot be applied to functions without return value [-Wignored-attributes]
```


> Does the warning escape the system header?

No, which means we could just use `_LIBCPP_NODISCARD`/`_LIBCPP_NODISCARD_EXT` on the constructor and let the warning be captured inside the system header. That's what you had in mind to avoid introducing another macro, right? Would you prefer that?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D65900/new/

https://reviews.llvm.org/D65900





More information about the libcxx-commits mailing list