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

            Bug ID: 101034
           Summary: wrong constraint in std::any's constructor
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hewillk at gmail dot com
  Target Milestone: ---

In any#L208:

    template <typename _Tp, typename _Up, typename... _Args,
              typename _VTp = decay_t<_Tp>, typename _Mgr = _Manager<_VTp>,
              __any_constructible_t<_VTp, initializer_list<_Up>,
              _Args&&...> = false>
    explicit
    any(in_place_type_t<_Tp>, initializer_list<_Up> __il, _Args&&... __args)


It should be __any_constructible_t<_VTp, initializer_list<_Up>&, _Args&&...> =
false>.

https://godbolt.org/z/afhTbM3b1

#include <any>

struct S {
  S(std::initializer_list<int>&, int) {}
};

int main() {
  std::any a(std::in_place_type<S>, {0}, 0);
}

Reply via email to