Distinguish between const and non-const method with same name in boost::bind
When I use boost::bind
with a method name which is declared both const and non-const I am getting in ambiguous error, for example
boost::bind( &boost::o开发者_StackOverflow中文版ptional<T>::get, _1 )
How can I solve this problem?
The problem together with workarounds is descibed in FAQ part of Boost.Bind reference.
You could also make use of utility functions like the following:
#include <boost/bind.hpp>
#include <boost/optional.hpp>
template <class Ret, class Obj>
Ret (Obj::* const_getter(Ret (Obj::*p) () const)) () const
{
return p;
}
template <class Ret, class Obj>
Ret (Obj::* nonconst_getter(Ret (Obj::*p)())) ()
{
return p;
}
int main()
{
boost::bind( const_getter(&boost::optional<int>::get), _1 );
boost::bind( nonconst_getter(&boost::optional<int>::get), _1 );
}
精彩评论