【问题标题】:Example of ill-formed implicit conversion格式错误的隐式转换示例
【发布时间】:2014-11-22 06:12:00
【问题描述】:

N3797::13.3.3.1/2 [over.best.ics] 讲述了一个格式错误的隐式转换,如下所示:

隐式转换序列只关心类型, cv-qualification 和参数的值类别以及它们是如何 转换为匹配参数的相应属性。 其他属性,例如生命周期、存储类、对齐方式或 论点的可访问性以及论点是否是 位域被忽略。所以,虽然隐式转换序列 可以为给定的参数-参数对定义转换 从参数到参数可能仍然是格式错误的 最终分析。

我不知道我们如何定义这样的转换。问题是我所知道的所有类型的转换都是格式正确的转换,例如使用operatorn A(){ ... } 的用户定义转换或标准转换。你不能提供一个格式错误的转换的例子吗?

【问题讨论】:

  • 可能类似于来自int 的私​​有转换构造函数。

标签: c++ implicit-conversion


【解决方案1】:

§13.3.3.1.4 [over.ics.ref]/p4 中的简单示例:

[ 示例:具有“对int的左值引用”参数的函数 即使相应的论点是 int 位域。隐式转换序列的形成对待 int 位域作为 int 左值并找到与 参数。如果函数是通过重载决议选择的,则 由于禁止调用,调用仍将是不正确的 将非const 左值引用绑定到位域(8.5.3)。 ——结束 示例 ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-10
    • 2013-04-12
    • 1970-01-01
    • 2021-12-25
    • 2012-12-01
    • 1970-01-01
    相关资源
    最近更新 更多