https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104788
Bug ID: 104788 Summary: ICE Product: gcc Version: 11.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: raffael at casagrande dot ch Target Milestone: --- The following simple program produces an internal compiler error when compiled with "-std=c++20" (problem seems to be fixed in current trunk 12.0!): #include <algorithm> #include <vector> template <class MESH_FACTORY> class OpenFoamReader { public: OpenFoamReader() { auto z = []() { struct Connection { std::uint32_t end_point; auto operator<=>(const Connection&) const noexcept -> std::strong_ordering = default; }; std::vector<Connection> connections; // sort connections std::ranges::sort(connections); }; } }; int main() { OpenFoamReader<int> reader; } ================================================ Error message: ================================================ In file included from /opt/compiler-explorer/gcc-11.2.0/include/c++/11.2.0/bits/move.h:57, from /opt/compiler-explorer/gcc-11.2.0/include/c++/11.2.0/bits/stl_pair.h:59, from /opt/compiler-explorer/gcc-11.2.0/include/c++/11.2.0/utility:70, from /opt/compiler-explorer/gcc-11.2.0/include/c++/11.2.0/algorithm:60, from <source>:1: /opt/compiler-explorer/gcc-11.2.0/include/c++/11.2.0/type_traits: In instantiation of 'constexpr const bool std::is_invocable_v<std::ranges::less&, OpenFoamReader<int>::OpenFoamReader()::<lambda()>::Connection&, OpenFoamReader<int>::OpenFoamReader()::<lambda()>::Connection&>': /opt/compiler-explorer/gcc-11.2.0/include/c++/11.2.0/concepts:338:25: required by substitution of 'template<class _Range, class _Comp, class _Proj> requires (random_access_range<_Range>) && (sortable<decltype(std::ranges::__cust_access::__begin((declval<_Container&>)())), _Comp, _Proj>) constexpr std::ranges::borrowed_iterator_t<_Range> std::ranges::__sort_fn::operator()(_Range&&, _Comp, _Proj) const [with _Range = std::vector<OpenFoamReader<int>::OpenFoamReader()::<lambda()>::Connection, std::allocator<OpenFoamReader<int>::OpenFoamReader()::<lambda()>::Connection> >&; _Comp = std::ranges::less; _Proj = std::identity]' <source>:16:24: required from 'OpenFoamReader<MESH_FACTORY>::OpenFoamReader() [with MESH_FACTORY = int]' <source>:22:25: required from here /opt/compiler-explorer/gcc-11.2.0/include/c++/11.2.0/type_traits:3001:27: internal compiler error: Segmentation fault 3001 | inline constexpr bool is_invocable_v = is_invocable<_Fn, _Args...>::value; | ^~~~~~~~~~~~~~ 0x1786229 internal_error(char const*, ...) ???:0 0x806d30 stmts_are_full_exprs_p() ???:0 0x700b81 cp_finish_decl(tree_node*, tree_node*, bool, tree_node*, int) ???:0 0x7e02f3 instantiate_decl(tree_node*, bool, bool) ???:0 0x70a613 maybe_instantiate_decl(tree_node*) ???:0 0x7f4881 lookup_and_finish_template_variable(tree_node*, tree_node*, int) ???:0 0x6c532a constraints_satisfied_p(tree_node*, tree_node*) ???:0 0x7f7487 fn_type_unification(tree_node*, tree_node*, tree_node*, tree_node* const*, unsigned int, tree_node*, unification_kind_t, int, conversion**, bool, bool) ???:0 0x695371 build_op_call(tree_node*, vec<tree_node*, va_gc, vl_embed>**, int) ???:0 0x80ae32 finish_call_expr(tree_node*, vec<tree_node*, va_gc, vl_embed>**, bool, bool, int) ???:0 0x7f2e86 tsubst_lambda_expr(tree_node*, tree_node*, int, tree_node*) ???:0 0x7e02f3 instantiate_decl(tree_node*, bool, bool) ???:0 0x7fb69b instantiate_pending_templates(int) ???:0 0x70cd4d c_parse_final_cleanups() ???:0