为什么这个整数隐式转换是模棱两可的?

达伦·史密斯(Darren Smith)

我有以下简单的示例代码,其中包含两个整数类型的类构造函数:

struct Y
{
  Y(int) {}
  Y(long long) {}
};

这是从以下位置调用的:

void foo()
{
  char          _char;
  short         _short;
  int           _int;
  long          _long;
  long long     _longlong;

  Y y0 = _char;
  Y y1 = _short;
  Y y2 = _int;
  Y y3 = _long;
  Y y4 = _longlong;
}

当我在64位模式下使用gcc 4.8.4进行编译时,仅收到一个错误:

error: conversion from ‘long int’ to ‘Y’ is ambiguous
   Y y3 = _long;
          ^

我不明白的是为什么允许_char_short转换,但是_long含糊不清。

巴里

确定最佳可行候选者时,转化类型分为三个等级:完全匹配,提升(包括积分提升)和转化(包括积分转化)。

小于int可以提升为的任何整数类型int,其他所有都是转换。因此,对于charshort,升职是最可行的候选人。对于intlong long,我们只选择完全匹配。

对于long,但是,我们有两种选择都涉及一个整体转换没有规则来区分两次转换中的哪一次是“更好”的,因此我们最终会产生歧义。您将不得不将long自己转换为所需的类型。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Akka HTTP模棱两可的隐式转换

来自分类Dev

为什么这个EBNF语法模棱两可?

来自分类Dev

为什么这个refname模棱两可

来自分类Dev

模棱两可的重载,隐式转换和显式构造函数

来自分类Dev

模棱两可的重载,隐式转换和显式构造函数

来自分类Dev

为什么这个ANTLR4语法模棱两可?

来自分类Dev

转换是模棱两可的。标准隐式转换无法选择强制转换运算符

来自分类Dev

为什么此方法重载模棱两可?

来自分类Dev

为什么isnan模棱两可?如何避免?

来自分类Dev

为什么这样模棱两可?

来自分类Dev

为什么IDEA导入模棱两可的Java

来自分类Dev

播放json写入子类会给出模棱两可的隐式值错误

来自分类Dev

将模棱两可的CFG转换为模棱两可的CFG

来自分类Dev

困惑于将模棱两可的语法转换为模棱两可的语法

来自分类Dev

为什么这两种方法模棱两可

来自分类Dev

为什么两个功能不是模棱两可的?

来自分类Dev

为什么Array和Integer构造函数模棱两可

来自分类Dev

为什么以下运算符重载是模棱两可的?

来自分类Dev

为什么编译器会给出模棱两可的方法调用错误?

来自分类Dev

编译时错误:调用重载方法时模棱两可。为什么?

来自分类Dev

为什么不能推断类型类约束而变得模棱两可?

来自分类Dev

无功能覆盖的多重继承。为什么模棱两可

来自分类Dev

为什么当类型变量应该模棱两可时才推断出Integer?

来自分类Dev

在Haskell中,即使启用AllowAmbiguousTypes,为什么类型仍然模棱两可?

来自分类Dev

为什么在加入表时列变得模棱两可?

来自分类Dev

为什么对模版化函数有一个模棱两可的要求?

来自分类Dev

为什么命名空间中的自由函数是模棱两可的?

来自分类Dev

CDI与@Produces的模棱两可的依赖关系-为什么?

来自分类Dev

编译时错误:调用重载方法时模棱两可。为什么?

Related 相关文章

  1. 1

    Akka HTTP模棱两可的隐式转换

  2. 2

    为什么这个EBNF语法模棱两可?

  3. 3

    为什么这个refname模棱两可

  4. 4

    模棱两可的重载,隐式转换和显式构造函数

  5. 5

    模棱两可的重载,隐式转换和显式构造函数

  6. 6

    为什么这个ANTLR4语法模棱两可?

  7. 7

    转换是模棱两可的。标准隐式转换无法选择强制转换运算符

  8. 8

    为什么此方法重载模棱两可?

  9. 9

    为什么isnan模棱两可?如何避免?

  10. 10

    为什么这样模棱两可?

  11. 11

    为什么IDEA导入模棱两可的Java

  12. 12

    播放json写入子类会给出模棱两可的隐式值错误

  13. 13

    将模棱两可的CFG转换为模棱两可的CFG

  14. 14

    困惑于将模棱两可的语法转换为模棱两可的语法

  15. 15

    为什么这两种方法模棱两可

  16. 16

    为什么两个功能不是模棱两可的?

  17. 17

    为什么Array和Integer构造函数模棱两可

  18. 18

    为什么以下运算符重载是模棱两可的?

  19. 19

    为什么编译器会给出模棱两可的方法调用错误?

  20. 20

    编译时错误:调用重载方法时模棱两可。为什么?

  21. 21

    为什么不能推断类型类约束而变得模棱两可?

  22. 22

    无功能覆盖的多重继承。为什么模棱两可

  23. 23

    为什么当类型变量应该模棱两可时才推断出Integer?

  24. 24

    在Haskell中,即使启用AllowAmbiguousTypes,为什么类型仍然模棱两可?

  25. 25

    为什么在加入表时列变得模棱两可?

  26. 26

    为什么对模版化函数有一个模棱两可的要求?

  27. 27

    为什么命名空间中的自由函数是模棱两可的?

  28. 28

    CDI与@Produces的模棱两可的依赖关系-为什么?

  29. 29

    编译时错误:调用重载方法时模棱两可。为什么?

热门标签

归档