public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug c++/95454] New: type-level nodiscard not applied to constructors @ 2020-05-31 17:53 johelegp at gmail dot com 2021-12-30 16:31 ` [Bug c++/95454] " steve+gcc at tecwec dot eu ` (3 more replies) 0 siblings, 4 replies; 5+ messages in thread From: johelegp at gmail dot com @ 2020-05-31 17:53 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95454 Bug ID: 95454 Summary: type-level nodiscard not applied to constructors Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: johelegp at gmail dot com Target Milestone: --- The following does not warn for constructors. See https://godbolt.org/z/BTZwew. ```C++ struct [[nodiscard]] X { int x; X operator+() const { return *this; } }; class [[nodiscard]] Y { int y; public: Y operator+() const { return *this; } }; void f() { X{}; Y{}; X x; +x; Y y; +y; } ``` ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c++/95454] type-level nodiscard not applied to constructors 2020-05-31 17:53 [Bug c++/95454] New: type-level nodiscard not applied to constructors johelegp at gmail dot com @ 2021-12-30 16:31 ` steve+gcc at tecwec dot eu 2022-07-19 12:10 ` kyrylo.bohdanenko at gmail dot com ` (2 subsequent siblings) 3 siblings, 0 replies; 5+ messages in thread From: steve+gcc at tecwec dot eu @ 2021-12-30 16:31 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95454 Eric Estievenart <steve+gcc at tecwec dot eu> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |steve+gcc at tecwec dot eu --- Comment #1 from Eric Estievenart <steve+gcc at tecwec dot eu> --- Indeed, confirming with even simpler code ( https://godbolt.org/z/EPbsfxYcj ): struct [[nodiscard]] Z {}; void f() { Z{}; // should warn but does not } Tested all versions: 11.2, trunk, with -Wall -Wextra -.... This is really a need for modern code, even experienced developpers sometimes forget the 'lock' in Lock lock{&mutex}; and this has severe consequences ;-) ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c++/95454] type-level nodiscard not applied to constructors 2020-05-31 17:53 [Bug c++/95454] New: type-level nodiscard not applied to constructors johelegp at gmail dot com 2021-12-30 16:31 ` [Bug c++/95454] " steve+gcc at tecwec dot eu @ 2022-07-19 12:10 ` kyrylo.bohdanenko at gmail dot com 2022-07-19 14:33 ` johelegp at gmail dot com 2023-03-21 15:32 ` pinskia at gcc dot gnu.org 3 siblings, 0 replies; 5+ messages in thread From: kyrylo.bohdanenko at gmail dot com @ 2022-07-19 12:10 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95454 Kyrylo Bohdanenko <kyrylo.bohdanenko at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |kyrylo.bohdanenko at gmail dot com --- Comment #2 from Kyrylo Bohdanenko <kyrylo.bohdanenko at gmail dot com> --- Still relevant as of the current trunk. A workaround would be to declare the constructor(s) [[nodiscard]]: struct Data { [[nodiscard]] Data() {} }; int main() { Data{}; } This actually issues a warning: <source>: In function 'int main()': <source>:6:11: warning: ignoring return value of 'Data::Data()', declared with attribute 'nodiscard' [-Wunused-result] Sandbox: https://godbolt.org/z/3Koj8rra7 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c++/95454] type-level nodiscard not applied to constructors 2020-05-31 17:53 [Bug c++/95454] New: type-level nodiscard not applied to constructors johelegp at gmail dot com 2021-12-30 16:31 ` [Bug c++/95454] " steve+gcc at tecwec dot eu 2022-07-19 12:10 ` kyrylo.bohdanenko at gmail dot com @ 2022-07-19 14:33 ` johelegp at gmail dot com 2023-03-21 15:32 ` pinskia at gcc dot gnu.org 3 siblings, 0 replies; 5+ messages in thread From: johelegp at gmail dot com @ 2022-07-19 14:33 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95454 --- Comment #3 from Johel Ernesto Guerrero Peña <johelegp at gmail dot com> --- > A workaround would be to declare the constructor(s) [[nodiscard]]: That's generally a [better recommendation](https://github.com/mpusz/units/issues/136). Though I think you'd have to `= default` SMFs to get the same effects as the type-level annotation. ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c++/95454] type-level nodiscard not applied to constructors 2020-05-31 17:53 [Bug c++/95454] New: type-level nodiscard not applied to constructors johelegp at gmail dot com ` (2 preceding siblings ...) 2022-07-19 14:33 ` johelegp at gmail dot com @ 2023-03-21 15:32 ` pinskia at gcc dot gnu.org 3 siblings, 0 replies; 5+ messages in thread From: pinskia at gcc dot gnu.org @ 2023-03-21 15:32 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95454 Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |DUPLICATE Status|UNCONFIRMED |RESOLVED --- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Dup of bug 85973. *** This bug has been marked as a duplicate of bug 85973 *** ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2023-03-21 15:32 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-05-31 17:53 [Bug c++/95454] New: type-level nodiscard not applied to constructors johelegp at gmail dot com 2021-12-30 16:31 ` [Bug c++/95454] " steve+gcc at tecwec dot eu 2022-07-19 12:10 ` kyrylo.bohdanenko at gmail dot com 2022-07-19 14:33 ` johelegp at gmail dot com 2023-03-21 15:32 ` pinskia at gcc dot gnu.org
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).