2010-02-14 31 views

Trả lời

6

Sự cố cùng với cách giải quyết được giải thích trong phần Câu hỏi thường gặp của tham chiếu Boost.Bind.

Bạn cũng có thể tận dụng chức năng tiện ích như sau:

#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); 
} 
+0

Cảm ơn bạn cho cả hai lời đề nghị. Tôi thích cách giải quyết cast trong Câu hỏi thường gặp Boost.Bind và sử dụng điều này ngay bây giờ trong mã nguồn của tôi. –

+0

Đối với hồ sơ, workaround cast là này: cho bạn muốn ràng buộc một hàm 'int Foo :: get() const', thay vì ràng buộc' & Foo :: get', ràng buộc 'static_cast (& Foo :: get) ' – congusbongus

Các vấn đề liên quan