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.