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>>>::iteratorOk, 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.