2010-02-14 22 views

Odpowiedz

6

Problem wraz z obejściami omówiono w części Często zadawanych pytań pod numerem Boost.Bind.

Można również skorzystać z funkcji użytkowych jak następuje:

#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

Podziękuj zarówno sugestie. Preferuję obejście tego problemu w FAQ Boost.Bind i wykorzystałem to teraz w moim kodzie źródłowym. –

+0

Dla zapisu, obejście obejścia jest następujące: pod warunkiem, że chcesz powiązać funkcję 'int Foo :: get() const', zamiast wiązania' & Foo :: get', powiązać 'static_cast (& Foo :: get) ' – congusbongus

Powiązane problemy