[Bug c++/88820] ICE in in C++2a mode for code which is able to be compiled in C++17 mode
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88820 --- Comment #5 from Marek Polacek --- This reduced test ICEs left and right with -std=c++17/14 since r236221, but the ICE changed into another ICE with r248433. template <__SIZE_TYPE__> class basic_fixed_string; struct empty_subject; template struct parser { template static auto trampoline_decide(); bool correct = trampoline_decide(); };
[Bug c++/88820] ICE in in C++2a mode for code which is able to be compiled in C++17 mode
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88820 --- Comment #4 from Hana Dusíková --- The ICE will not happen if you comment out line 464 from first example.
[Bug c++/88820] ICE in in C++2a mode for code which is able to be compiled in C++17 mode
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88820 Marek Polacek changed: What|Removed |Added Keywords||ice-on-valid-code Status|UNCONFIRMED |ASSIGNED Last reconfirmed||2019-01-13 CC||mpolacek at gcc dot gnu.org Assignee|unassigned at gcc dot gnu.org |mpolacek at gcc dot gnu.org Target Milestone|--- |9.0 Ever confirmed|0 |1 --- Comment #3 from Marek Polacek --- The first ICE started with r265734. Will try to reduce...
[Bug c++/88820] ICE in in C++2a mode for code which is able to be compiled in C++17 mode
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88820 --- Comment #2 from Hana Dusíková --- Created attachment 45422 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45422=edit referencing subtype unable to deduce parent type ~/projekty/ice-gcc > g++-HEAD minimal.cpp -std=c++2a -DREFERENCE ~/projekty/ice-gcc > g++-HEAD minimal.cpp -std=c++2a -DAUTO ~/projekty/ice-gcc > g++-HEAD minimal.cpp -std=c++2a -DCNTTP minimal.cpp: In member function 'unsigned int Foo::count()': minimal.cpp:33:19: error: class template argument deduction failed: 33 | return SubType<0>().value(); | ^ minimal.cpp:33:19: error: no matching function for call to 'ArgType(ArgType)' minimal.cpp:8:21: note: candidate: 'template ArgType(const char (&)[N])-> ArgType' 8 | template ArgType(const char (&)[N]) -> ArgType; | ^~~ minimal.cpp:8:21: note: template argument deduction/substitution failed: minimal.cpp:33:19: note: mismatched types 'const char [N]' and 'ArgType' 33 | return SubType<0>().value(); | ^ minimal.cpp:5:12: note: candidate: 'template ArgType(...)-> ArgType' 5 | constexpr ArgType(...) noexcept { } |^~~ minimal.cpp:5:12: note: template argument deduction/substitution failed: minimal.cpp:33:19: note: couldn't deduce template parameter 'N' 33 | return SubType<0>().value(); | ^ minimal.cpp:4:28: note: candidate: 'template ArgType(ArgType)-> ArgType' 4 | template struct ArgType { |^~~ minimal.cpp:4:28: note: template argument deduction/substitution failed: minimal.cpp:33:19: note: mismatched types 'ArgType' and 'ArgType' 33 | return SubType<0>().value(); | ^
[Bug c++/88820] ICE in in C++2a mode for code which is able to be compiled in C++17 mode
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88820 --- Comment #1 from Hana Dusíková --- I think I found a related problem. It's about deducting argument of a class when instantiating subtype. I created a minimal case. I'm attaching.