许多标准库算法在C ++ 20中具有两个版本:一个在std
名称空间中,另一个在std::ranges
名称空间中具有相同的名称。例如,std::ranges::count
和std::count
都用于计算满足谓词的元素的数量。
为什么这些算法有两个版本?
范围功能将C ++ 20概念添加到迭代器和范围,并将其算法等的定义限制在这些概念上。但是,C ++ 20概念与C ++ 17命名要求有不同的要求。通常,满足C ++ 17要求的类型将满足C ++ 20概念的等效要求,但并非在所有情况下都满足。尽管通常很容易更新代码以使其对C ++ 20概念有效,但仍会破坏向后兼容性,使用户的代码仅停止在C ++ 20中进行编译即可。
因此,他们没有向用户强加约束算法,而是创建了新算法,您可以选择使用这些新算法。因此,没有代码损坏。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句