https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116108
Bug ID: 116108 Summary: GCC crashes on incorrect code with -std=c++20 Product: gcc Version: 15.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: q1210081098 at gmail dot com Target Milestone: --- Reproducer: https://gcc.godbolt.org/z/37KzjK5T7 ```cpp #include <iostream> namespace std { template<class T> class size_t_class { public: typedef std::uintptr value_type; const size_t_class value = 1; constexpr bool operator == (size_t_class u) const { return true; } template<class U> constexpr operator U() { return static_cast<U>(value); } }; } struct Point3 { std::size_t_class x = 0; std::size_t_class y = 0; }; int main() { Point3 p = {4, std::size_t_class{2}}; p.x = 10; return p.y<<'\n' ; } ``` and get the error information ``` <source>:7:22: error: 'uintptr' in namespace 'std' does not name a type 7 | typedef std::uintptr value_type; | ^~~~~~~ <source>:18:5: error: invalid use of template-name 'std::size_t_class' without an argument list 18 | std::size_t_class x = 0; | ^~~ <source>:19:5: error: invalid use of template-name 'std::size_t_class' without an argument list 19 | std::size_t_class y = 0; | ^~~ g++: internal compiler error: Segmentation fault signal terminated program cc1plus Please submit a full bug report, with preprocessed source (by using -freport-bug). See <https://gcc.gnu.org/bugs/> for instructions. Compiler returned: 4 ```