
Hello, Could you please explain what causes the following warning and how to avoid it (boost 1.36, MSVC9.0SP1): typedef boost::weak_ptr<Task> TaskWeakPtr; typedef std::vector<TaskWeakPtr> TaskWeakPtrs; TaskWeakPtrs tasks_; TaskWeakPtrs::iterator toRemove = std::remove_if(tasks_.begin(), tasks_.end(), !boost::bind(&TaskWeakPtr::lock, _1)); 1>../boost\boost/bind.hpp(1643) : warning C4180: qualifier applied to function type has no meaning; ignored 1> ../boost\boost/bind.hpp(1677) : see reference to class template instantiation 'boost::_bi::add_cref<Pm,I>' being compiled 1> with 1> [ 1> Pm=boost::shared_ptr<Task> (__thiscall boost::weak_ptr<Task>::* )(void), 1> I=1 1> ] 1> .\TaskMaker.cpp(90) : see reference to class template instantiation 'boost::_bi::dm_result<Pm,A1>' being compiled 1> with 1> [ 1> Pm=boost::shared_ptr<Task> (__thiscall boost::weak_ptr<Task>::* )(void), 1> A1=boost::arg<1> 1> ] Thank you!

Igor R:
Hello,
Could you please explain what causes the following warning and how to avoid it (boost 1.36, MSVC9.0SP1):
...
1>../boost\boost/bind.hpp(1643) : warning C4180: qualifier applied to function type has no meaning; ignored 1> ../boost\boost/bind.hpp(1677) : see reference to class template instantiation 'boost::_bi::add_cref<Pm,I>' being compiled 1> with 1> [ 1> Pm=boost::shared_ptr<Task> (__thiscall boost::weak_ptr<Task>::* )(void), 1> I=1 1> ]
A compiler bug (Pm should match the specialization below the one chosen). The warning is harmless in this specific case and can be ignored.
participants (2)
-
Igor R
-
Peter Dimov