https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83529

--- Comment #5 from Nathan Sidwell <nathan at gcc dot gnu.org> ---
template <typename T> int Foo (T);

template <int> class TPL;

template <int I>
constexpr TPL<Foo (I)> Foo (); // #1

template <int I>
constexpr TPL<Foo (I)> Foo (); // #2

What I think is happening is that the definition at #1 changes the overload set
to which 'Foo' binds.  Thus in #2 the 'Foo (I)' finds something different.  I
don't think we prune the overload set until later?

Reply via email to