2010-02-14 6 views

Antwort

6

Das Problem zusammen mit Problemumgehungen wird im FAQ-Teil der Boost.Bind Referenz beschrieben.

Sie könnten auch die Verwendung von Utility-Funktionen wie folgt machen:

#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

Ihr danken für beide Vorschläge. Ich bevorzuge den Cast-Workaround in der Boost.Bind-FAQ und verwende dies jetzt in meinem Quellcode. –

+0

Für den Datensatz ist die Cast-Problemumgehung das: Wenn Sie eine Funktion 'int Foo :: get() const' binden wollen, statt Bindung' & Foo :: get', bind 'static_cast (& Foo :: get) ' – congusbongus

Verwandte Themen