资格转换的歧义
ambiguity in qualification conversion
我想我要么误解了标准中的某些东西,可能是模棱两可的。这是关于资格转换的。
根据最新草稿http://eel.is/c draft/conv.qual#1
T型T型的CV分解是CVI和PI的序列,因此T是" CV0 P0 P0 CV1 P1 P1 p1 cvn-1 Pn-1 CVN U",对于N> 0,
关于我的理解T类T:
的分解using T1 = const char * const **;
可能正在遵循
- n = 2
- u = char
- cv2 = const
- p2 = *
- cv1 = const
- P1 - *
- cv0 =空
- p0 = *
,但由于没有说分解应该走到哪个方向(IMO)也可以用另一种方式来解释:
- n = 2
- u = char
- cv0 = const
- p0 = *
- cv1 = const
- P1 - *
- cv2 =空
- p2 = *
这将对以下句子有所不同http://eel.is/c draft/conv.qual#3.3:
如果CV1I和CV2I不同,则在每个CV2K中均在0&lt中const;K<i。
由于对于第一个解释,该句子将永远无法实现i = 1或2的句子,而对于第二个解释,对于i = 1或2。
我的第二个疑问是,如何解释句子
如果CV1I和CV2I不同,则在每个CV2K中均在0&lt中const;K<i。
for i = 0或1。对于i = 0或1,CV集为空,因此我们可以说该集合的所有简历都有const,因为所有内容均无,集合中没有元素,但是我们也可以说没有元素具有const,因为集合中没有元素。
标准中是否有任何位置,可以解释如何准确理解简历分解以及应该走的方向?
答案是由@martinbonner在评论中给出的。
我没有注意到仅在u旁边有CVN,这意味着 constness分解从最外部到最内部的指针。
(具有最大索引的简历将最接近U型U)。
相关文章:
- 为什么下面带有非常量转换函数的代码没有歧义?
- 如何在模板化转换运算符中消除此构造的歧义?
- 函数调用歧义(用户定义的转换和 Derived2Base 指针转换)
- C++中的重载歧义,用于自动将对象转换为"printable"格式
- 资格转换的歧义
- 在隐式转换后的智能指针上删除函数调用中的歧义
- 解决隐藏歧义的不明确用户定义转换
- 为什么我总是必须除以 49 才能得到二进制转换器 + cout 歧义的正确答案?
- 转换运算符重载歧义,编译器不同
- 如何解决转换构造函数和普通构造函数之间的歧义
- 转换 - 错误 E2015,AnsiString(char) 和 AnsiString(short) 之间的歧义
- 调用函数的歧义.隐式转换
- C++11:在按值传递参数初始化时转换构造函数和转换函数之间的歧义
- g++和clang++-删除由重载转换运算符歧义获取的指针
- 安全布尔多次转换歧义
- 当目标类有多个构造函数时,消除强制转换操作符的歧义
- 在将派生类指针转换为基类时,基类有歧义
- 歧义调用(从char*到lambda与std::string的转换)
- 运算符=与转换运算符结合时的歧义
- 转换运算符重载 - 函数歧义