当前位置:  开发笔记 > 编程语言 > 正文

lambda有不同的类型吗?

如何解决《lambda有不同的类型吗?》经验,为你挑选了1个好方法。

每个lambda都应该有一个唯一的未知类型..是否保证同一范围内的两个lambda具有不同的类型?

int main() {
   auto l1 = [](){};
   auto l2 = [](){};   
  static_assert(std::is_same::value == false, "Types cannot be equal!");
}

这有效,但我想知道是否保证断言永远不会触发.



1> Jerry Coffin..:

是的,每个lambda表达式都会产生一个唯一的类型([expr.prim.lambda]/3):

lambda-expression的类型(也是闭包对象的类型)是一个唯一的,未命名的nonunion类类型 - 称为闭包类型 - 其属性如下所述.

[强调补充]


@IStanley:`[expr.prim.lambda]/3`是一个属性(它表示C++标准中的一个部分).
推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有