С г ++ 3.4 и 4.7 я заметил следующее странное поведение:C++ Разрешение перегрузки, определяемый пользователь преобразование и шаблон функции
Шаблон функции не соответствует, если определенному пользователю преобразование необходимо, где обычная функция будет. Я не смог найти соответствующее правило в стандарте C++ 98. Правильно ли g ++, (как я полагаю)? Или это ошибка?
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;
}