https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86946
Jason Merrill <jason at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
CC| |jason at gcc dot gnu.org
Assignee|unassigned at gcc dot gnu.org |jason at gcc dot gnu.org
--- Comment #6 from Jason Merrill <jason at gcc dot gnu.org> ---
Well-formed version of the testcase, that has never worked:
template <typename a, typename c> constexpr int d(a, c) { return 42; }
template <long> class e {};
template <unsigned long f, unsigned b, typename> e<d(f, b)> d();
template <unsigned long f, unsigned b, typename> e<d(f, b)> d();
int main()
{
d<1,2,int>();
}
With checking disabled, the two declarations are treated as ambiguous; with
checking enabled, we do structural comparison and find the internal
inconsistency, and so ICE.
What is the testcase from capnproto?