将运算符传递给lambda

Swa*_*a T 3 c++ lambda c++11

是否可以将运算符传递给lambda?例如,将某些运算符传递给以下功能。

auto lambdaCompare = [](value,compare1,compare2,op){return value op compare1 and value op compare2;};

Dim*_*htz 5

您不能传递运算符然后随意使用它,但是可以传递std::greater_equal

#include <iostream>
#include <functional>

int main() {

    auto lambdaCompare = [](int value, int compare1, int compare2, std::function<bool(int, int)> op) {
        return op(value, compare1) && op(value, compare2);
    };

    std::cout << lambdaCompare(2, 1, 6, std::greater_equal<int>());

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

  • 但是,您*确实*应该更喜欢使用通用的C ++ 14 lambda并尽可能避免`std :: function`的开销(间接导致缺乏内联和/或破坏了优化的机会)。 (4认同)