Parametertyp in Lambdas automatisch bestimmen lassen



  • Hallo zusammen,

    ist es möglich, in Lambda-Funktionen den Typ der Parameter automatisch bestimmen zu lassen?

    Beispiel:

    int main()
    {
        std::map<std::string, std::vector<std::pair<std::string, std::size_t>>> m;
        // das Ding füllen
    
        auto max = std::max_element(std::begin(m), std::end(m),
            [](auto a, auto b) // <--- ist das irgendwie möglich
            { return true; }
        );
    }
    

    (Ok, Beispielcode, der macht so keinerlei Sinn)

    Der Typ der Parameter ist in dem (überspitzten Beispiel) sowas hier:

    std::map<std::string, std::vector<std::pair<std::string, std::size_t>>>::iterator
    

    Ok, herleiten lassen könnte ich mir das mit:

    [](decltype(std::begin(m)) a, decltype(std::begin(m)) b)
    { ... }
    

    Aber das ist nicht wirklich hübsch wie ich finde, und auch etwas viel

    Gibt es da Möglichkeiten?



  • Leider ist Typinferenz mit Lambda-Ausdrücken nicht möglich. Das führt in einigen Fällen dazu, dass Ausdrücke mit std::bind() oder Boost.Lambda viel kompakter geschrieben werden können.


Anmelden zum Antworten