public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "brignon.enzo at protonmail dot com" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug c++/109084] New: requires keyword can't access private static constexpr bool in templated class Date: Thu, 09 Mar 2023 19:33:44 +0000 [thread overview] Message-ID: <bug-109084-4@http.gcc.gnu.org/bugzilla/> (raw) https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109084 Bug ID: 109084 Summary: requires keyword can't access private static constexpr bool in templated class Product: gcc Version: 12.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: brignon.enzo at protonmail dot com Target Milestone: --- Created attachment 54626 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=54626&action=edit The minimal reproduction file (not preprocessed because it does not include anything) When using requires keyword to enable class member function using a private static constexpr bool (eventually the value of a concept) in a templated class gcc fails to access the given boolean variable because it is private within its context. It does not fail if the boolean is public or if the class is not templated. You can find a minimal example (not preprocessed because it needs no include) in attachment. Output of gcc -v: Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.1/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /build/gcc/src/gcc/configure --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++,d --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --with-build-config=bootstrap-lto --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-libstdcxx-backtrace --enable-link-serialization=1 --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 12.2.1 20230201 (GCC) The file is complied with following options: g++ -std=c++20 bug.cpp Output of gcc: bug.cpp: In function 'int main()': bug.cpp:12:15: error: class template argument deduction failed: 12 | MyClass c{}; | ^ bug.cpp:12:15: error: no matching function for call to 'MyClass()' bug.cpp:8:5: note: candidate: 'template<class T, class Enable> requires MyClass<T>::cond MyClass()-> MyClass<T>' 8 | MyClass() {} | ^~~~~~~ bug.cpp:8:5: note: template argument deduction/substitution failed: bug.cpp:8:5: note: constraints not satisfied bug.cpp: In substitution of 'template<class T, class Enable> requires MyClass<T>::cond MyClass()-> MyClass<T> [with T = int; Enable = void]': bug.cpp:12:15: required from here bug.cpp:8:5: required by the constraints of 'template<class T, class Enable> requires MyClass<T>::cond MyClass()-> MyClass<T>' bug.cpp:12:15: error: 'constexpr const bool MyClass<int>::cond' is private within this context 12 | MyClass c{}; | ^ bug.cpp:5:27: note: declared private here 5 | static constexpr bool cond = true; | ^~~~ bug.cpp:3:7: note: candidate: 'template<class T> MyClass(MyClass<T>)-> MyClass<T>' 3 | class MyClass { | ^~~~~~~ bug.cpp:3:7: note: template argument deduction/substitution failed: bug.cpp:12:15: note: candidate expects 1 argument, 0 provided 12 | MyClass c{}; |
next reply other threads:[~2023-03-09 19:33 UTC|newest] Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-03-09 19:33 brignon.enzo at protonmail dot com [this message] 2023-03-09 21:12 ` [Bug c++/109084] [10/11/12/13 Regression] " pinskia at gcc dot gnu.org 2023-03-09 23:07 ` ppalka at gcc dot gnu.org 2023-03-09 23:12 ` ppalka at gcc dot gnu.org 2023-03-10 8:07 ` rguenth at gcc dot gnu.org 2023-07-07 10:45 ` [Bug c++/109084] [11/12/13/14 " rguenth 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-109084-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).