On Fri, 14 Mar 2025 at 00:04, Ville Voutilainen
<ville.voutilai...@gmail.com> wrote:
>
> On Fri, 14 Mar 2025 at 00:03, Ville Voutilainen
> <ville.voutilai...@gmail.com> wrote:
> >
> > On Thu, 13 Mar 2025 at 23:57, Jonathan Wakely <jwak...@redhat.com> wrote:
> > > > Do we also want to constraint the tuple(const _Elements&...)
> > > > constructor with requires sizeof...(_Elements) >= 1, which is present
> > > > on the C++17 version?
> > >
> > > Oh we don't need that constraint, because we have an explicit
> > > specialization for tuple<>.
> >
> > Are.. ..you sure? What about CTAD? That will look into the primary
> > template only, and will perform its madness based on that
> > and nothing else.
>
> Oh, but CTAD would fail if there's no arguments passed.
>
> So.. maybe we never needed that constraint, and the only reason I
> added it was not trusting my (or anyone else's) understanding
> of partial ordering and overload resolution.

Chances are of course that that's not it, and there's been some
over-eagerness in the compiler to instantiate
those declarations for the template/specialization overload
resolution, and then some of the original meta-helpers
were instantiated with empty packs. They didn't like that. We used
that constraint to send that evaluation to
the false-case of what's now _TupleConstraints.

Reply via email to