mit G ++ 3.4 und 4.7 I das folgende seltsamen Verhalten beobachtet:C++ Überlastungs Auflösung, benutzerdefinierte Umwandlung und Funktionsschablone
eine Funktionsschablone nicht übereinstimmt, wenn ein Benutzer definierte Umwandlung notwendig ist, wo eine Ebene funktioniert. Ich konnte die entsprechende Regel im C++ 98 Standard nicht finden. Ist g ++ korrekt, (wie ich annehme)? Oder ist es ein Fehler?
template <class T>
int x(auto_ptr_ref<T> p)
{
return 1;
}
// this would match
/*
int x(auto_ptr_ref<int> p)
{
return 2;
}
*/
void dummy()
{
cout << x(auto_ptr<int>()) << endl;
}