【问题标题】:First qualifier is ignored by a cv-qualification signature第一个限定符被 cv 限定签名忽略
【发布时间】:2019-07-18 01:08:55
【问题描述】:

http://eel.is/c++draft/conv.qual#1.sentence-4 说:

T 的最长 cv-decomposition 中的第一个之后的 cv-qualifiers n-tuple,即 cv1,cv2,…,cvn,称为 T 的 cv-qualification 签名。

这意味着对于类型const int,cv-qualification 签名是一个空集,因为第一个限定符不包括在内; int 的 cv 限定签名也是如此。当遵循http://eel.is/c++draft/conv.qual#3 规则时,这将允许const int 转换为int,这绝对不是有意的。我是不是看错了?

【问题讨论】:

    标签: c++ language-lawyer


    【解决方案1】:

    这将允许将 const int 转换为 int

    正确。

    这绝对不是故意的。

    这是故意的。

    我是不是看错了?

    您的解释似乎是正确的。但是关于意向性的假设不是。


    这种转换的一个例子:

    const T i = 42;
    T j = i; // implicit conversion from const to non-const
    

    【讨论】:

      猜你喜欢
      • 2013-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-05
      • 1970-01-01
      • 1970-01-01
      • 2021-02-17
      • 2014-11-20
      相关资源
      最近更新 更多