public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "dev at hrookami dot icu" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug libstdc++/96645] New: std::variant default constructor Date: Mon, 17 Aug 2020 07:58:08 +0000 [thread overview] Message-ID: <bug-96645-4@http.gcc.gnu.org/bugzilla/> (raw) https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96645 Bug ID: 96645 Summary: std::variant default constructor Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: dev at hrookami dot icu Target Milestone: --- Appears in version 9 and above. Flags: -std=c++17 Code: #include <variant> void testVariant() { struct DataWithVariant { using Member = std::variant<int, float>; Member d; }; auto d = DataWithVariant{}; } void testVarStruct() { struct DataWithStruct { struct A { int number = 5; // compiles, if remove initialization }; struct B { bool flag = false; }; using Member = std::variant<A, B>; Member data; }; auto d = DataWithStruct{}; } int main() { testVariant(); testVarStruct(); } Compiler output: <source>: In function 'void testVarStruct()': <source>:26:29: error: use of deleted function 'std::variant<_Types>::variant() [with _Types = {testVarStruct()::DataWithStruct::A, testVarStruct()::DataWithStruct::B}]' 26 | auto d = DataWithStruct{}; | ^ In file included from <source>:1: /opt/compiler-explorer/gcc-9.1.0/include/c++/9.1.0/variant:1287:7: note: 'std::variant<_Types>::variant() [with _Types = {testVarStruct()::DataWithStruct::A, testVarStruct()::DataWithStruct::B}]' is implicitly deleted because the default definition would be ill-formed: 1287 | variant() = default; | ^~~~~~~ /opt/compiler-explorer/gcc-9.1.0/include/c++/9.1.0/variant:1287:7: error: use of deleted function 'constexpr std::_Enable_default_constructor<false, _Tag>::_Enable_default_constructor() [with _Tag = std::variant<testVarStruct()::DataWithStruct::A, testVarStruct()::DataWithStruct::B>]' In file included from /opt/compiler-explorer/gcc-9.1.0/include/c++/9.1.0/variant:38, from <source>:1: /opt/compiler-explorer/gcc-9.1.0/include/c++/9.1.0/bits/enable_special_members.h:110:15: note: declared here 110 | constexpr _Enable_default_constructor() noexcept = delete; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ It compiles if move nested structs in global namespace or remove initializer.
next reply other threads:[~2020-08-17 7:58 UTC|newest] Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-08-17 7:58 dev at hrookami dot icu [this message] 2020-08-17 14:21 ` [Bug c++/96645] [9/10/11 Regression] " redi at gcc dot gnu.org 2020-08-17 14:24 ` dev at hrookami dot icu 2020-08-17 14:30 ` redi at gcc dot gnu.org 2020-08-17 14:40 ` redi at gcc dot gnu.org 2020-08-18 7:49 ` dev at hrookami dot icu 2020-08-25 10:31 ` rguenth at gcc dot gnu.org 2020-10-12 12:33 ` rguenth at gcc dot gnu.org 2021-01-25 13:53 ` jakub at gcc dot gnu.org 2021-02-15 15:28 ` ppalka at gcc dot gnu.org 2021-04-02 18:20 ` jason at gcc dot gnu.org 2021-04-02 18:21 ` jason at gcc dot gnu.org 2021-04-03 11:27 ` redi at gcc dot gnu.org 2021-06-01 8:18 ` [Bug c++/96645] [9/10/11/12 " rguenth at gcc dot gnu.org 2021-09-06 19:56 ` eyalroz1 at gmx dot com 2021-11-23 17:08 ` redi at gcc dot gnu.org 2022-03-22 14:12 ` [Bug c++/96645] [9/10/11/12 Regression] [CWG2335] std::variant default constructor and unparsed DMI jason at gcc dot gnu.org 2022-03-22 16:15 ` jason at gcc dot gnu.org 2022-03-22 16:22 ` jason at gcc dot gnu.org 2022-03-22 17:31 ` ppalka at gcc dot gnu.org 2022-03-22 20:56 ` eyalroz1 at gmx dot com 2022-03-22 21:29 ` redi at gcc dot gnu.org 2022-03-23 13:36 ` jason at gcc dot gnu.org 2022-03-24 18:31 ` cvs-commit at gcc dot gnu.org 2022-03-26 23:22 ` jason at gcc dot gnu.org 2022-03-31 1:43 ` cvs-commit at gcc dot gnu.org 2022-04-01 14:00 ` cvs-commit at gcc dot gnu.org 2022-04-01 14:07 ` jason at gcc dot gnu.org 2022-04-01 14:14 ` jason at gcc dot gnu.org 2022-04-22 8:26 ` redi at gcc dot gnu.org 2022-05-15 6:35 ` [Bug c++/96645] [9/10/11/12/13 " pinskia at gcc dot gnu.org 2022-08-15 4:53 ` [Bug c++/96645] [10/11/12/13 " pinskia at gcc dot gnu.org 2023-04-26 6:55 ` [Bug c++/96645] [10/11/12/13/14 " rguenth at gcc dot gnu.org 2023-07-27 9:22 ` [Bug c++/96645] [11/12/13/14 " rguenth at gcc dot gnu.org 2024-05-21 9:10 ` [Bug c++/96645] [11/12/13/14/15 " jakub at gcc dot gnu.org
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=bug-96645-4@http.gcc.gnu.org/bugzilla/ \ --to=gcc-bugzilla@gcc.gnu.org \ --cc=gcc-bugs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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).