Rup*_*nes 5 c++ boost boost-bind
当我使用boost::bind声明为const和非const的方法名称时,我会遇到模糊错误,例如
boost::bind( &boost::optional<T>::get, _1 )
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?
在Boost.Bind参考的FAQ部分中描述了问题以及变通方法.
您还可以使用以下实用程序功能:
#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 );
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1528 次 |
| 最近记录: |