我认为我或者误解了某些东西,或者标准中的某些东西可能是模棱两可的。这与资格转换有关。
根据最新的http://eel.is/c++draft/conv.qual#1草案
类型T的cv分解是cvi和Pi的序列,使得对于n> 0,T为“ cv0 P0 cv1 P1⋯cvn-1 Pn-1 cvn U”,
据我了解,类型T的分解:
using T1 = const char * const **;
可能会关注
但是由于没有说明分解应该朝哪个方向(IMO),也可以用另一种方式解释:
以下句子http://eel.is/c++draft/conv.qual#3.3会有所不同:
如果cv1i和cv2i不同,则const在每个cv2k中的值为0
因为对于第一种解释,对于i = 1或2,该句子将永远不会实现,而对于第二种解释,对于i = 1或2,该句子将是正确的。
我的第二个疑问是,如何解释句子
如果cv1i和cv2i不同,则const在每个cv2k中的值为0
对于i = 0或1。对于i = 0或1,cv集为空,因此我们可以说该集合的所有cv都具有const,因为在集合中所有元素都不存在,也没有元素,但是我们可以说没有元素具有const,因为集合中没有元素。
标准中是否有任何地方可以解释如何准确地理解cv分解以及该分解的方向?
答案 0 :(得分:0)
@MartinBonner在对该问题的评论中给出了答案。
我没有注意到,在U旁边只有cvn,这意味着常数分解从最外面的指针到最里面的指针。
(具有最大索引的简历最接近于类型U)。