gpt4 book ai didi

C++ lambda 运算符 ==

转载 作者:IT老高 更新时间:2023-10-28 22:38:33 31 4
gpt4 key购买 nike

如何比较 C++ (Visual Studio 2010) 中的两个 lambda 函数?

std::function<void ()> lambda1 = []() {};
std::function<void ()> lambda2 = []() {};
bool eq1 = (lambda1 == lambda1);
bool eq2 = (lambda1 != lambda2);

我收到一个编译错误,声称 operator == 不可访问。

编辑:我正在尝试比较函数实例。所以 lambda1 == lambda1 应该返回 true,而 lambda1 == lambda2 应该返回 false。

最佳答案

您无法比较 std::function 对象,因为 std::function is not equality comparable . lambda 的闭包类型也不是相等可比的。

但是,如果您的 lambda 没有捕获任何内容,则 lambda 本身可以转换为函数指针,并且函数指针具有相等性可比性(但是,据我所知,在此示例中是否完全未指定 are_1and2_equal truefalse):

void(*lambda1)() = []() { };
void(*lambda2)() = []() { };
bool are_1and1_equal = (lambda1 == lambda1); // will be true
bool are_1and2_equal = (lambda1 == lambda2); // may be true?

Visual C++ 2010 does not support this conversion .直到 Visual C++ 发布之前,转换才被添加到 C++0x。

关于C++ lambda 运算符 ==,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3988869/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com