作为 C + + lambda 表达式的一个特性,这个问题一直困扰着我: C + + lambda 表达式的类型是唯一的和匿名的,我简直不能把它写下来。即使我创建了两个语法完全相同的 lambda,结果类型也是不同的。结果是,a) lambdas 只能传递给允许编译时间的模板函数,不可说的类型可以随对象一起传递,b) lambdas 只有在通过 std::function<>
擦除类型后才有用。
好吧,但是 C + + 就是这样做的,我已经准备好把它作为该语言的一个令人厌烦的特性来写了。但是,我刚刚了解到 Rust 似乎也是这样做的: 每个 Rust 函数或 lambda 都有一个唯一的匿名类型。现在我想知道: 为什么?
所以,我的问题是:
从语言设计者的角度来看,将唯一的匿名类型的概念引入到语言中有什么好处?