boost::bind und überladene Funktionen

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);
}

Diskussion

Sende ein Kommentar, Frage, Korrekturen, Beschimpfungen...

Name:

Nachricht:


doxapp c++
Zur Übersicht
home