https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118482
Bug ID: 118482 Summary: Mutually dependent decltype ICE Product: gcc Version: 14.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: pashade1 at yahoo dot com CC: ewlu at rivosinc dot com Target Milestone: --- GCC encounters an ICE (segfault) when getting the name of the following type using `typeid()` (see Godbolt link: https://godbolt.org/z/TEaYE7veb, where clang can compile this). ``` using what_type = decltype( [](this auto&& self, decltype([](decltype(self)&){}) x = {}){ return x; }()); #include <typeinfo> auto& info = typeid(what_type); ``` Attempting to use an instance of this type also causes a compiler segfault (see Godbolt link: https://godbolt.org/z/5x6sn7d8z, where clang also fails to compile this). ``` using what_type = decltype( [](this auto&& self, decltype([](decltype(self)&){}) x = {}){ return x; }()); what_type x; int main() { if (x) return 1; } ``` Both fail for versions 14.1, 14.2, and trunk available on Godbolt. The pattern requires deducing this (C++23), so these examples are expected to not compile on any versions older than 14.0.