隨着克++ 3.4和4.7我觀察到以下奇怪的行爲: 如果用戶定義的轉換是必要的函數模板不匹配,其中,一個普通的功能會。 我無法在C++ 98標準中找到相應的規則。 g ++是否正確,(如我所假設的)?或者它是一個錯誤? template <class T>
int x(auto_ptr_ref<T> p)
{
return 1;
}
// this would match
/*
我有一些 - 可能真的很愚蠢 - 關於重載分辨率的問題。 假設有一個受限制的通用方法Greet接受T類型的參數person,該參數必須來自Person。這Greet方法然後在另一個類中調用一些非泛型方法,將person作爲參數傳遞。該非泛型方法有幾個重載 - 對於基類和派生類。爲什麼總是調用基類的重載? 實施例: public static class Test
{
public st