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

            Bug ID: 68982
           Summary: Missing explicit qualification for std::forward in
                    functional
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: rogero at howzatt dot demon.co.uk
  Target Milestone: ---

I notice that <functional> is no longer consistently prefixing forward with
std:: and this means ADL gets invoked, which causes trouble when the argument
is from boost namespace and boost::forward is available.

As an example, consider libstdc++-v3/include/std/functional at r229290, line
616:

    operator()(_Tp&& __obj) const
    noexcept(noexcept(std::__invoke(_M_pm, forward<_Tp>(__obj))))
    -> decltype(std::__invoke(_M_pm, std::forward<_Tp>(__obj)))
    { return std::__invoke(_M_pm, std::forward<_Tp>(__obj)); }

This can produce compiler errors when, for instance, the instantiating type _Tp
is boost::shared_ptr.

I get failures building proprietary code, have not yet produced a simple
standa-alone example.

Reply via email to