是否定义为C标准算法提供空范围?
继
my previous question之后,我们能否证明该标准允许我们将空范围传递给标准算法?
第24.1 / 7段将“空范围”定义为范围[i,i)(其中i有效),并且我看起来似乎是“可达”的,但我不确定这是否有资格证明. 特别是,在查看排序功能时会遇到麻烦.例如,std :: sort:
由于log(0)通常被认为是未定义的,我不知道0 * undefined是什么,这里有问题吗? (是的,好吧,我有点迂腐.当然,没有自尊的stdlib实现会导致实际问题,将空范围传递给std :: sort.但我想知道标准中是否存在潜在的漏洞措辞在这里.) 解决方法
我似乎没有太大的问题空间.在§24.1/ 6中,我们被告知:
以$24.1 / 7:
由于0是有限的,[i,i)是有效范围. §24.1/ 7继续说:
这并不是说有效范围保证定义的结果(合理的,因为还有其他要求,例如比较函数),但当然似乎暗示一个范围为空的范围本身不应该导致UB或类似的东西.然而,特别是,该标准使空范围只是另一个有效范围;空的和非空的有效范围之间没有真正的区别,因此适用于非空有效范围的情况同样适用于空的有效范围. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |