资格转换的歧义
ambiguity in qualification conversion
我想我要么误解了某些东西,要么标准中的某些东西可能含糊不清。而且是关于资格转换。
根据最新草稿http://eel.is/c++draft/conv.qual#1
A cv-decomposition of a type T is a sequence of cvi and Pi such that T is “cv0 P0 cv1 P1 ⋯ cvn−1 Pn−1 cvn U” for n>0,
关于我对类型T分解的理解:
using T1 = const char * const **;
可能正在关注
- n = 2
- U = 字符
- cv2 = const
- P2 = *
- cv1 = const
- P1 - *
- cv0 = 空
- P0 = *
但由于没有说明分解应该朝哪个方向进行(IMO)也可以用另一种方式解释:
- n = 2
- U = 字符
- cv0 = const
- P0 = *
- cv1 = const
- P1 - *
- cv2 = 空
- P2 = *
下面的句子会有所不同http://eel.is/c++draft/conv.qual#3.3 :
If the cv1i and cv2i are different, then const is in every cv2k for 0 < k < i.
因为对于第一种解释,如果 i = 1 或 2,句子将永远不成立,而对于第二种解释,对于 i = 1 或 2,句子将成立。
我的第二个疑惑是,这句话怎么解释
If the cv1i and cv2i are different, then const is in every cv2k for 0 < k < i.
For i = 0 or 1. For i = 0 or 1 cv set is empty, thus we can say that all cv for this set have const, because all is none and there are no element在集合中,但我们也可以说 none 元素有常量,因为集合中没有元素。
标准中是否有任何地方可以解释如何准确理解 cv 分解以及应该朝哪个方向发展?
@MartinBonner 在问题的评论中给出了答案。
我没注意到U旁边有cvn,意思是constness decomposition是从最外层指针到最内层指针.
(索引最大的cv最接近U类型)
我想我要么误解了某些东西,要么标准中的某些东西可能含糊不清。而且是关于资格转换。
根据最新草稿http://eel.is/c++draft/conv.qual#1
A cv-decomposition of a type T is a sequence of cvi and Pi such that T is “cv0 P0 cv1 P1 ⋯ cvn−1 Pn−1 cvn U” for n>0,
关于我对类型T分解的理解:
using T1 = const char * const **;
可能正在关注
- n = 2
- U = 字符
- cv2 = const
- P2 = *
- cv1 = const
- P1 - *
- cv0 = 空
- P0 = *
但由于没有说明分解应该朝哪个方向进行(IMO)也可以用另一种方式解释:
- n = 2
- U = 字符
- cv0 = const
- P0 = *
- cv1 = const
- P1 - *
- cv2 = 空
- P2 = *
下面的句子会有所不同http://eel.is/c++draft/conv.qual#3.3 :
If the cv1i and cv2i are different, then const is in every cv2k for 0 < k < i.
因为对于第一种解释,如果 i = 1 或 2,句子将永远不成立,而对于第二种解释,对于 i = 1 或 2,句子将成立。
我的第二个疑惑是,这句话怎么解释
If the cv1i and cv2i are different, then const is in every cv2k for 0 < k < i.
For i = 0 or 1. For i = 0 or 1 cv set is empty, thus we can say that all cv for this set have const, because all is none and there are no element在集合中,但我们也可以说 none 元素有常量,因为集合中没有元素。
标准中是否有任何地方可以解释如何准确理解 cv 分解以及应该朝哪个方向发展?
@MartinBonner 在问题的评论中给出了答案。
我没注意到U旁边有cvn,意思是constness decomposition是从最外层指针到最内层指针.
(索引最大的cv最接近U类型)