樣品的編號:意義的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