gpt4 book ai didi

c++11 - 无法比较 Lambda

转载 作者:行者123 更新时间:2023-12-04 06:38:23 25 4
gpt4 key购买 nike

我想知道这是标准的,还是我的代码中的错误。我正在尝试比较一对我自己开发的函数对象。如果函数对象的类型不同,我拒绝比较,所以我知道两个 lambda 是相同的类型。那为什么不能比较呢?

最佳答案

每个 C++0x lambda 对象都有一个不同的类型,即使签名是相同的。

auto l1=[](){}; // one do-nothing lambda
auto l2=[](){}; // and another
l1=l2; // ERROR: l1 and l2 have distinct types

如果两个 C++0x lambda 具有相同的类型,则它们必须来自同一行代码。当然,如果它们捕获变量,则它们不一定相同,因为它们可能来自不同的调用。

但是,C++0x lambda 没有任何比较运算符,因此您无法比较实例以查看它们是否确实相同,或者只是相同的类型。仔细想想这是有道理的:如果捕获的变量没有比较运算符,那么您就无法比较该类型的 lambda,因为每个副本对于捕获的变量可能具有不同的值。

关于c++11 - 无法比较 Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4589214/

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