public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug c++/110836] New: g++ should report when there is no way to create structure or class @ 2023-07-28 6:08 andris at gcc dot gnu.org 2023-07-28 6:20 ` [Bug c++/110836] [C++20] " pinskia at gcc dot gnu.org ` (3 more replies) 0 siblings, 4 replies; 5+ messages in thread From: andris at gcc dot gnu.org @ 2023-07-28 6:08 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110836 Bug ID: 110836 Summary: g++ should report when there is no way to create structure or class Product: gcc Version: 13.1.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: andris at gcc dot gnu.org Target Milestone: --- Created attachment 55651 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=55651&action=edit example GCC should report when there is no way to create structure or class instance. At least warning would be required (preferably enabled by default or -Wall) It could even be an error Possible reasons why it could be impossible to create object (list can be incomplete): - at least one deleted constructor present and no other constructors - only copy constructor - only private destructor - only private constructor and no static methods (should exclude possibility of factory methods as there is no way to detect them from declaration only when static methods are present) Currently problem is only detected when there is an attempt to create object, but it should be also detectable from header files only ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c++/110836] [C++20] g++ should report when there is no way to create structure or class 2023-07-28 6:08 [Bug c++/110836] New: g++ should report when there is no way to create structure or class andris at gcc dot gnu.org @ 2023-07-28 6:20 ` pinskia at gcc dot gnu.org 2023-07-28 6:43 ` andris at gcc dot gnu.org ` (2 subsequent siblings) 3 siblings, 0 replies; 5+ messages in thread From: pinskia at gcc dot gnu.org @ 2023-07-28 6:20 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110836 Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |diagnostic Summary|g++ should report when |[C++20] g++ should report |there is no way to create |when there is no way to |structure or class |create structure or class --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Actually, in C++11-C++17 you can create it like: ``` struct Foo { Foo(const Foo&) = delete; }; Foo a{}; ``` Only in C++20+ there is no way to create it. ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c++/110836] [C++20] g++ should report when there is no way to create structure or class 2023-07-28 6:08 [Bug c++/110836] New: g++ should report when there is no way to create structure or class andris at gcc dot gnu.org 2023-07-28 6:20 ` [Bug c++/110836] [C++20] " pinskia at gcc dot gnu.org @ 2023-07-28 6:43 ` andris at gcc dot gnu.org 2023-07-28 8:20 ` redi at gcc dot gnu.org 2023-07-28 8:21 ` redi at gcc dot gnu.org 3 siblings, 0 replies; 5+ messages in thread From: andris at gcc dot gnu.org @ 2023-07-28 6:43 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110836 --- Comment #2 from Andris Pavenis <andris at gcc dot gnu.org> --- Warning would allow to detected problem earlier. Otherwise it could only be detected later in case when affected structure or class is part of an library and its objects are not created directly inside the library. In this case the inability to create objects may only be detected later when building other packages which uses this library In our case the problem appeared when replacing deriving from boost::noncopyable with added deleted copy constructor and deleted assignment operators. ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c++/110836] [C++20] g++ should report when there is no way to create structure or class 2023-07-28 6:08 [Bug c++/110836] New: g++ should report when there is no way to create structure or class andris at gcc dot gnu.org 2023-07-28 6:20 ` [Bug c++/110836] [C++20] " pinskia at gcc dot gnu.org 2023-07-28 6:43 ` andris at gcc dot gnu.org @ 2023-07-28 8:20 ` redi at gcc dot gnu.org 2023-07-28 8:21 ` redi at gcc dot gnu.org 3 siblings, 0 replies; 5+ messages in thread From: redi at gcc dot gnu.org @ 2023-07-28 8:20 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110836 --- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- Some classes are supposed to be impossible to create, e.g. the monostate pattern where the class has static members and the whole API is in terms of static members functions. If you don't notice a class cannot be created until users compile your library then you are missing some tests for that class. Why do you have a class that has never been tested even once? ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c++/110836] [C++20] g++ should report when there is no way to create structure or class 2023-07-28 6:08 [Bug c++/110836] New: g++ should report when there is no way to create structure or class andris at gcc dot gnu.org ` (2 preceding siblings ...) 2023-07-28 8:20 ` redi at gcc dot gnu.org @ 2023-07-28 8:21 ` redi at gcc dot gnu.org 3 siblings, 0 replies; 5+ messages in thread From: redi at gcc dot gnu.org @ 2023-07-28 8:21 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110836 --- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Andris Pavenis from comment #0) > At least warning would be required (preferably enabled by default or -Wall) > It could even be an error No it couldn't. ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2023-07-28 8:21 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2023-07-28 6:08 [Bug c++/110836] New: g++ should report when there is no way to create structure or class andris at gcc dot gnu.org 2023-07-28 6:20 ` [Bug c++/110836] [C++20] " pinskia at gcc dot gnu.org 2023-07-28 6:43 ` andris at gcc dot gnu.org 2023-07-28 8:20 ` redi at gcc dot gnu.org 2023-07-28 8:21 ` redi 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).