C++ und Boost
Mit boost::bind lassen sich auch Memberfunktionen an ein Funktionsobjekt binden. Aber was passiert, wenn die Funktion überladen ist. Welche Version wird gebunden? Um dies festzulegen gibt es verschiedene Möglichkeiten. Als Beispiel wird hier die konstante Memberfunktion at des std::vector gebunden.
{
vector<string> V;
// 1: cast
boost::bind(
static_cast<
vector<string>::const_reference
(vector<string>::*)(vector<string>::size_type) const>
(&vector<string>::at),
&V, _1
);
// 2: temporary function pointer
vector<string>::const_reference
(vector<string>::*func)
(vector<string>::size_type) const = &vector<string>::at;
boost::bind(func, &V, _1);
// 3: temporary reference
const vector<string> & const_ref = V;
boost::bind(&vector<string>::at, &const_ref, _1);
}
Sende ein Kommentar, Frage, Korrekturen, Beschimpfungen...
doxapp c++ Zur Übersicht home