https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66371
Bug ID: 66371 Summary: ICE: canonical types differ for identical types Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: jamrial at gmail dot com Target Milestone: --- Created attachment 35674 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=35674&action=edit Preprocessed source as generated by -freport-bug GCC 6.0.0 svn 223906 In file included from /home/jamrial/range-v3/include/range/v3/range_interface.hpp:25:0, from /home/jamrial/range-v3/include/range/v3/range_facade.hpp:21, from /home/jamrial/range-v3/include/range/v3/core.hpp:21, from /home/jamrial/range-v3/test/container_conversion.cpp:17: /home/jamrial/range-v3/include/range/v3/to_container.hpp: In instantiation of ‘struct ranges::v3::detail::to_container_fn<meta::v1::always<std::vector<int> > >’: /home/jamrial/range-v3/include/range/v3/to_container.hpp:143:62: required from ‘Cont ranges::v3::to_(Rng&&) [with Cont = std::vector<int>; Rng = ranges::v3::take_exactly_view<ranges::v3::view::ints_fn>&; int _concept_requires_140 = 42; typename std::enable_if<((_concept_requires_140 == 43) || (ranges::v3::Range<Cont>() && ranges::v3::detail::ConvertibleToContainer<Rng, Cont>())), int>::type <anonymous> = 0]’ /home/jamrial/range-v3/include/range/v3/range_interface.hpp:240:46: required from ‘ranges::v3::range_interface<Derived, <anonymous> >::operator Container() [with Container = std::vector<int>; D = ranges::v3::take_exactly_view<ranges::v3::view::ints_fn>; Alloc = std::allocator<int>; int _concept_requires_237 = 42; typename std::enable_if<((_concept_requires_237 == 43) || ranges::v3::detail::ConvertibleToContainer<D, Container>()), int>::type <anonymous> = 0; Derived = ranges::v3::take_exactly_view<ranges::v3::view::ints_fn>; ranges::v3::cardinality Cardinality = (ranges::v3::cardinality)-1]’ /home/jamrial/range-v3/test/container_conversion.cpp:31:52: required from here /home/jamrial/range-v3/include/range/v3/to_container.hpp:74:22: internal compiler error: canonical types differ for identical types std::enable_if<((_concept_requires_73 == 43) || ((ranges::v3::Range<T>() && ranges::v3::detail::ConvertibleToContainer<Rng, Cont, ranges::v3::range_common_iterator_t<Rng> >()) && ranges::v3::detail::to_container_fn<meta::v1::always<std::vector<int> > >::ReserveConcept<Cont, Rng>())), int> and std::enable_if<((_concept_requires_73 == 43) || ((ranges::v3::Range<T>() && ranges::v3::detail::ConvertibleToContainer<Rng, Cont, ranges::v3::range_common_iterator_t<Rng> >()) && ranges::v3::detail::to_container_fn<meta::v1::quote<std::vector> >::ReserveConcept<Cont, Rng>())), int> Cont impl(Rng && rng, std::true_type) const ^ 0x738b8e comptypes(tree_node*, tree_node*, int) /home/jamrial/gcc-svn/gcc/cp/typeck.c:1423 0x737610 structural_comptypes /home/jamrial/gcc-svn/gcc/cp/typeck.c:1338 0x66e122 reduce_template_parm_level /home/jamrial/gcc-svn/gcc/cp/pt.c:3704 0x66a120 tsubst(tree_node*, tree_node*, int, tree_node*) /home/jamrial/gcc-svn/gcc/cp/pt.c:12155 0x670e50 tsubst_copy /home/jamrial/gcc-svn/gcc/cp/pt.c:13054 0x676056 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) /home/jamrial/gcc-svn/gcc/cp/pt.c:15728 0x65b6b0 tsubst_expr /home/jamrial/gcc-svn/gcc/cp/pt.c:14393 0x66bf6b tsubst_template_arg /home/jamrial/gcc-svn/gcc/cp/pt.c:9690 0x666a42 tsubst_template_args /home/jamrial/gcc-svn/gcc/cp/pt.c:10241 0x666d3a tsubst_template_args /home/jamrial/gcc-svn/gcc/cp/pt.c:10201 0x660342 tsubst_decl /home/jamrial/gcc-svn/gcc/cp/pt.c:10624 0x669f4e tsubst(tree_node*, tree_node*, int, tree_node*) /home/jamrial/gcc-svn/gcc/cp/pt.c:11819 0x68de6b instantiate_class_template_1 /home/jamrial/gcc-svn/gcc/cp/pt.c:9357 0x68de6b instantiate_class_template(tree_node*) /home/jamrial/gcc-svn/gcc/cp/pt.c:9671 0x7336fb complete_type(tree_node*) /home/jamrial/gcc-svn/gcc/cp/typeck.c:146 0x7338ef complete_type_or_maybe_complain(tree_node*, tree_node*, int) /home/jamrial/gcc-svn/gcc/cp/typeck.c:158 0x7339d9 require_complete_type_sfinae(tree_node*, int) /home/jamrial/gcc-svn/gcc/cp/typeck.c:102 0x5ec059 build_cxx_call(tree_node*, int, tree_node**, int) /home/jamrial/gcc-svn/gcc/cp/call.c:7652 0x5f1701 build_over_call /home/jamrial/gcc-svn/gcc/cp/call.c:7567 0x600471 build_new_function_call(tree_node*, vec<tree_node*, va_gc, vl_embed>**, bool, int) /home/jamrial/gcc-svn/gcc/cp/call.c:4100 New version of the first file reported in pr66067, this time with a different ICE.