是否有编程模型可以清楚地区分regular
概念和semiregular
概念的使用?
根据elements of programming,regular
概念具有明确的数学定义。我认为semiregular
概念(来自draft)是没有==比较器重载的常规概念。
范围库使用半规则概念来实现。但是,我无法理解,如果可以从另一个中衍生出一个,那么为什么有必要在两者之间进行区分。
答案 0 :(得分:3)
从概念上限制模板实际上是声称模板将自由使用概念所需的任何表达式。如果您正在编写的模板由于其实现的算法的性质而无需进行相等性测试,那么仅根据您所表达的生命力从该模板中排除类型是没有意义的不想使用。
并非每个类型在逻辑上都具有相等性测试的概念。没关系。但是在许多地方,用于相等性测试的规则性工具 except 很有用。因此,除了测试相等性以外,还有一种其他类型的规则概念。
regular
是“派生自”(用C ++讲的)semiregular
。 regular
被明确定义为semiregular
和equality_comparable
。