https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67537
Bug ID: 67537 Summary: [6 Regression] r225189 breaks building boost hana Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: trippels at gcc dot gnu.org CC: ville.voutilainen at gmail dot com Target Milestone: --- Created attachment 36319 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=36319&action=edit failing testcase for clang Starting with r225189 I get many errors like: (gcc-5 libstdc++ is fine) trippels@gcc2-power8 test % clang++ -gcc-toolchain ~/gcc_5/usr/local/ -DBOOST_HANA_CONFIG_ENABLE_STRING_UDL -DBOOST_HANA_TEST_PART=7 -O2 -I/home/trippels/hana/include -I/home/trippels/hana/test/include -I/home/trippels/hana/test -Wno-gnu-string-literal-operator-template -ftemplate-backtrace-limit=0 -pedantic -std=c++1y -W -Wall -Wextra -Wno-unused-local-typedefs -Wwrite-strings -o CMakeFiles/test.ext.std.tuple.part7.dir/ext/std/tuple.cpp.o -c /home/trippels/hana/test/ext/std/tuple.cpp trippels@gcc2-power8 test % clang++ -gcc-toolchain ~/gcc_6/usr/local/ -ferror-limit=1 -DBOOST_HANA_CONFIG_ENABLE_STRING_UDL -DBOOST_HANA_TEST_PART=7 -O2 -I/home/trippels/hana/include -I/home/trippels/hana/test/include -I/home/trippels/hana/test -Wno-gnu-string-literal-operator-template -ftemplate-backtrace-limit=0 -pedantic -std=c++1y -W -Wall -Wextra -Wno-unused-local-typedefs -Wwrite-strings -o CMakeFiles/test.ext.std.tuple.part7.dir/ext/std/tuple.cpp.o -c /home/trippels/hana/test/ext/std/tuple.cpp In file included from /home/trippels/hana/test/ext/std/tuple.cpp:7: In file included from /home/trippels/hana/include/boost/hana/ext/std/tuple.hpp:27: /home/trippels/gcc_6/usr/local/lib/gcc/powerpc64le-unknown-linux-gnu/6.0.0/../../../../include/c++/6.0.0/tuple:481:62: error: pack expansion contains parameter packs '_Elements' and '_UElements' that have different lengths (1 vs. 0) return __and_<is_constructible<_Elements, _UElements&&>...>::value; ~~~~~~~~~ ~~~~~~~~~~ ^ /home/trippels/gcc_6/usr/local/lib/gcc/powerpc64le-unknown-linux-gnu/6.0.0/../../../../include/c++/6.0.0/tuple:580:21: note: in instantiation of function template specialization 'std::_TC<true, boost::hana::test::integer<0, 17, void> >::_MoveConstructibleTuple<>' requested here _MoveConstructibleTuple<_UElements...>() ^ /home/trippels/gcc_6/usr/local/lib/gcc/powerpc64le-unknown-linux-gnu/6.0.0/../../../../include/c++/6.0.0/tuple:585:19: note: while substituting prior template arguments into non-type template parameter [with _UElements = <>] constexpr tuple(_UElements&&... __elements) ^~~~~ /home/trippels/gcc_6/usr/local/lib/gcc/powerpc64le-unknown-linux-gnu/6.0.0/../../../../include/c++/6.0.0/tuple:521:11: note: while substituting deduced template arguments into function template 'tuple' [with _UElements = <>, $1 = (no value)] class tuple : public _Tuple_impl<0, _Elements...> ^ /home/trippels/hana/include/boost/hana/basic_tuple.hpp:86:15: note: in instantiation of template class 'boost::hana::detail::elt<1, std::tuple<boost::hana::test::integer<0, 17, void> >, false>' requested here : detail::elt<n, Xn>... ^ /home/trippels/hana/include/boost/hana/basic_tuple.hpp:103:11: note: in instantiation of template class 'boost::hana::detail::basic_tuple_impl<std::integer_sequence<unsigned long, 0, 1, 2, 3, 4>, std::tuple<>, std::tuple<boost::hana::test::integer<0, 17, void> >, std::tuple<boost::hana::test::integer<0, 17, void>, boost::hana::test::integer<1, 17, void> >, std::tuple<boost::hana::test::integer<0, 17, void>, boost::hana::test::integer<1, 17, void>, boost::hana::test::integer<2, 17, void> >, std::tuple<boost::hana::test::integer<0, 17, void>, boost::hana::test::integer<1, 17, void>, boost::hana::test::integer<2, 17, void>, boost::hana::test::integer<3, 17, void>, boost::hana::test::integer<4, 17, void> > >' requested here : detail::basic_tuple_impl<std::make_index_sequence<sizeof...(Xn)>, Xn...> ^ /home/trippels/hana/include/boost/hana/tuple.hpp:63:28: note: in instantiation of template class 'boost::hana::basic_tuple<std::tuple<>, std::tuple<boost::hana::test::integer<0, 17, void> >, std::tuple<boost::hana::test::integer<0, 17, void>, boost::hana::test::integer<1, 17, void> >, std::tuple<boost::hana::test::integer<0, 17, void>, boost::hana::test::integer<1, 17, void>, boost::hana::test::integer<2, 17, void> >, std::tuple<boost::hana::test::integer<0, 17, void>, boost::hana::test::integer<1, 17, void>, boost::hana::test::integer<2, 17, void>, boost::hana::test::integer<3, 17, void>, boost::hana::test::integer<4, 17, void> > >' requested here basic_tuple<Xn...> storage_; ^ /home/trippels/hana/include/boost/hana/tuple.hpp:270:49: note: in instantiation of template class 'boost::hana::tuple<std::tuple<>, std::tuple<boost::hana::test::integer<0, 17, void> >, std::tuple<boost::hana::test::integer<0, 17, void>, boost::hana::test::integer<1, 17, void> >, std::tuple<boost::hana::test::integer<0, 17, void>, boost::hana::test::integer<1, 17, void>, boost::hana::test::integer<2, 17, void> >, std::tuple<boost::hana::test::integer<0, 17, void>, boost::hana::test::integer<1, 17, void>, boost::hana::test::integer<2, 17, void>, boost::hana::test::integer<3, 17, void>, boost::hana::test::integer<4, 17, void> > >' requested here tuple<typename std::decay<Xs>::type...> apply(Xs&& ...xs) ^ /home/trippels/hana/include/boost/hana/fwd/core/make.hpp:58:36: note: in instantiation of function template specialization 'boost::hana::make_impl<boost::hana::tuple_tag, void>::apply<std::tuple<>, std::tuple<boost::hana::test::integer<0, 17, void> >, std::tuple<boost::hana::test::integer<0, 17, void>, boost::hana::test::integer<1, 17, void> >, std::tuple<boost::hana::test::integer<0, 17, void>, boost::hana::test::integer<1, 17, void>, boost::hana::test::integer<2, 17, void> >, std::tuple<boost::hana::test::integer<0, 17, void>, boost::hana::test::integer<1, 17, void>, boost::hana::test::integer<2, 17, void>, boost::hana::test::integer<3, 17, void>, boost::hana::test::integer<4, 17, void> > >' requested here return make_impl<Tag>::apply(static_cast<X&&>(x)...); ^ /home/trippels/hana/test/ext/std/tuple.cpp:44:41: note: in instantiation of function template specialization 'boost::hana::make_t<boost::hana::tuple_tag>::operator()<std::tuple<>, std::tuple<boost::hana::test::integer<0, 17, void> >, std::tuple<boost::hana::test::integer<0, 17, void>, boost::hana::test::integer<1, 17, void> >, std::tuple<boost::hana::test::integer<0, 17, void>, boost::hana::test::integer<1, 17, void>, boost::hana::test::integer<2, 17, void> >, std::tuple<boost::hana::test::integer<0, 17, void>, boost::hana::test::integer<1, 17, void>, boost::hana::test::integer<2, 17, void>, boost::hana::test::integer<3, 17, void>, boost::hana::test::integer<4, 17, void> > >' requested here auto big_eq_tuples = make<tuple_tag>( ^ fatal error: too many errors emitted, stopping now [-ferror-limit=] 2 errors generated. I'm not sure how to reduce the issue further. gcc doesn't compile the file at all.