样品的编号:意义的I(I())
typedef int I;
struct X{ X(int); };
int main()
{
int(int());
X(X());
I(I());
}
线int(int());
是使用功能性的转换符号的表达 - 这是与初始化的临时int
的值初始化int
。
行X(X());
是一个名为X
的函数的声明,它不返回返回struct X
的参数。
我的问题是:这里的I(I())
是什么意思?标准中的哪些规则决定了这三种情况之间的意义差异?
'typedef int I'使得'I'的行为*完全像'int'。它只是分配另一个名字。因此,行I(I())和int(int())具有完全相同的含义。有关'typedef'的更多信息,请参见[[dcl.typedef](https://timsong-cpp.github.io/cppwp/dcl.typedef)]。 –
根据gcc/clang,它和'X'一样,函数'I'的声明返回'int'。 – Jarod42
所有3个都是函数decl – Sopel