什么是与C ++的上下文单一化?

Dave Herman最近在Rust 的演讲中表示,他们从C ++中借用了这个属性。 我找不到这个话题。 有人可以解释一下单态是什么意思吗?

单形化意味着生成通用函数的专用版本。 所以,如果我写一个函数来提取任何一对的第一个元素:

fn first<A, B>(pair: (A, B)) -> A { let (a, b) = pair; return a; } 

然后我调用这个函数两次:

 first((1, 2)); first(("a", "b")); 

编译器将生成两个版本的first(),一个专门用于成对input,另一个专用于成对的string。

这个名字来源于PL术语“多态性”—意思是一个可以处理多种types数据的函数。 单态是由多态到单态的转换。

不知道这个; 你可以链接到谈话? 这可能是一个厌恶的话。

赫尔曼可能已经创造了一个像模板专业化这样的术语,它产生了与模板相互不相关(非多态或“单形”)的types/对象,这是一个多态结构。