From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6662 invoked by alias); 23 Aug 2015 10:09:16 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 6608 invoked by uid 48); 23 Aug 2015 10:09:12 -0000 From: "trippels at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug c++/67164] ICE: tree check:=?UTF-8?Q?=20expected=20class=20=E2=80=98expression=E2=80=99?=,=?UTF-8?Q?=20have=20=E2=80=98exceptional=E2=80=99=20?=(argument_pack_select) in tree_operand_check, at tree.h:3356 Date: Sun, 23 Aug 2015 10:09:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c++ X-Bugzilla-Version: 6.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: trippels at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: cc Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2015-08/txt/msg01579.txt.bz2 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67164 Markus Trippelsdorf changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jason at gcc dot gnu.org --- Comment #3 from Markus Trippelsdorf --- Here's another testcase: namespace std { template struct A { static constexpr _Tp value = 0; }; template struct conditional; template struct B; template struct B<_B1, _B2> : conditional<1, _B1, _B2> {}; template struct C; template struct C<_B1, _B2> : conditional<1, _B2, _B1> {}; template struct D; template struct I : B, D<_Tp>>::type {}; template _Tp declval(); struct F { template ()))> static A __test(int); }; template struct J : F { decltype(__test<_Tp, _Arg>(0)) type; }; template struct K : C> {}; template struct L : conditional::value, int, K<_Tp, _Arg>> {}; template struct __is_direct_constructible : L<_Tp, _Arg>::type {}; template struct G; template struct G<_Tp, _Arg> : __is_direct_constructible<_Tp, _Arg> {}; template struct is_constructible : G<_Tp, _Args...>::type {}; template struct enable_if; template struct conditional { typedef _Iftrue type; }; template struct conditional { typedef _Iffalse type; }; } namespace detail { template struct fast_and; template struct closure { template ::value...>::value>> closure(Yn...); template closure(closure); }; } template struct make_impl; template struct H { template decltype(auto) operator()(X... x) { return make_impl::apply(x...); } }; template H make; struct Tuple; template struct M : detail::closure { using detail::closure::closure; }; template <> struct make_impl { template static M apply(Xs...); }; namespace test { struct { template decltype(auto) operator()(Xs... xs) { auto storage = make(xs...); return storage; } } seq; } int main() { test::seq(test::seq()); }