Thank you for reviewing. without _Decay to decay_t in the constructor which takes inplace_type_t, cases like this fails auto a = std::any(std::in_place_type<std::any>, 5);
for these constructors, standard does not say anything about not-sameness checks with any. https://en.cppreference.com/w/cpp/utility/any/any. ./kamlesh On Mon, Apr 20, 2020 at 11:54 PM Ville Voutilainen <ville.voutilai...@gmail.com> wrote: > > On Mon, 20 Apr 2020 at 21:09, Ville Voutilainen > <ville.voutilai...@gmail.com> wrote: > > > > On Sat, 18 Apr 2020 at 03:35, kamlesh kumar via Libstdc++ > > <libstd...@gcc.gnu.org> wrote: > > > > > > On Fri, Apr 17, 2020, 10:59 PM kamlesh kumar <kamleshbha...@gmail.com> > > > wrote: > > > > > > > Fixes all this. > > > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92156 > > > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91630 > > > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90415 > > > > > > > > On Fri, Apr 17, 2020 at 10:45 PM kamlesh kumar <kamleshbha...@gmail.com> > > > > wrote: > > > > > > > > > > This patch corrects the requirement of 4,5 and 6th constructor > > > > > As per https://en.cppreference.com/w/cpp/utility/any/any. > > > > The patch looks correct to me. We have some old cruft there, like the > > overload your patch removes, it was > > there to support copy-only types, but LWG issues axed that bit. This > > constructor indeed should not check is_constructible, > > because it'll end up instantiating this constructor itself, and > > compute its constraints, and instantiate itself. > > The in_place constructor doesn't have that problem, because it won't > > instantiate itself. > > ..except the change from _Decay to decay_t looks wrong. _Decay also > checks the non-sameness with > any. That change shouldn't be made.