什么时候与另一个类型兼容?

时间:2018-02-07 15:14:31

标签: c++ language-lawyer

何时类型与C ++中的其他类型兼容?我查看了标准,找不到类型兼容性的定义。

标准(n3690)中的使用示例:第18.10节运行时支持:

  

如果参数parmN是引用类型,或者是类型   与传递参数时产生的类型不兼容   没有参数,行为未定义。

类型是否简单"兼容"如果它们可以隐含地相互转换,那么它们会相互对立吗?

2 个答案:

答案 0 :(得分:1)

C ++没有"兼容类型"的概念。而C呢。

在C中,同一实体的两个声明必须声明兼容类型,而在C ++中,此约束由[basic.link]/10替换:

  

在对类型进行所有调整(其中typedef被其定义替换)之后,引用给定变量或函数的所有声明指定的类型应该是相同的,除了数组对象的声明可以指定不同的数组类型是否存在主要数组([dcl.array])。违反此规则的类型标识不需要诊断。

您引用的措辞是<cstdarg>标头的说明,它来自相应的C标头。所以你可以考虑&#34;兼容&#34;这里是C中的相同概念。

答案 1 :(得分:-1)

当RHS变量可以分配给LHS变量时,RHS变量的类型与类型对话相当。 您可以详细了解类型对话 here