我見過這樣的代碼:拉姆達的類型是什麼?
std::sort(x, x + N,
// Lambda expression begins
[](float a, float b) {
return std::abs(a) < std::abs(b);
});
明顯的std::sort
的第三個參數是一個可以容納拉姆達一個類型。但那是什麼類型? std::sort
是如此嚴重超載,我無法破譯它。我想構建一個函數列表:我想使用lambda表達式而不是函數指針,因爲後者必須具有大致相同的參數列表。
我想我可以寫
auto letTheComplerSortOutTheType =
[](float a, float b) {
return std::abs(a) < std::abs(b);
});
但是當涉及到使用的容器,不會幫我。
您可以隨時嘗試打印它; 'std :: cout << typeid(foo).name();' – OMGtechy
如果你在調試器中運行它並查看,你會看到編譯器爲該類型選擇的一些亂碼。每個lambda都是一個新的獨特類型。 – David