struct A
{
enum InnerEnum { X };
A(InnerEnum x)
{}
};
int main()
{
A a(X);
}
編譯器會抱怨:error C2065: 'X' : undeclared identifier
爲什麼C++ 11不支持這樣的名稱查找?
編譯器知道構造函數的參數類型是什麼,所以當我通過X作爲參數,編譯器應該知道這是一個有效的參數。
我知道這不是ADL(依賴於參數的名稱查找,也稱爲Koenig Lookup),但我認爲它非常有用,非常方便。因爲我不必寫如下:
A a(A::X);
我認爲ADL規則應該推廣到這種情況。
我對不對?
這就像ADL ... FDL(函數相關查找)的逆函數。 –
您是否考慮過如果您還有一個名爲'X'的局部變量,這將如何應用?不管怎樣,我讀到你的問題的方式,你說這是無效的C++,並詢問C++標準是否應該改變。這是錯誤的地方。 – hvd
謝謝,hvd。你給了我們一個令人信服的理由。 – xmllmx