Шаблоны - Неоднозначный вызов перегруженной функции - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Сел за изучение шаблонов C++, немного почитал и решил попробовать на практике. Написал самый тривиальный пример
#include<iostream>
using namespace std;
 
template< class T >
T min ( T a, T b )
{
    return ( a < b ? a:b );
}
 
int main()
{
    int a=5, b=10;
    cout<<min( a, b );
    system("pause");
    return 0;
}
Но, к моему удивлению, он работать отказался. MVS 2008 и MVS 2010 выдали ошибки типа
1>f:шаблоны.cpp(13) : error C2668: min: неоднозначный вызов перегруженной функции
       f:шаблоны.cpp(5): может быть 'T min<int>(T,T)'
       with
        [
            T=int
        ]
        f:\program files\microsoft visual studio 9.0\vc\include\xutility(3371):
или       'const _Ty &std::min<int>(const _Ty &,const _Ty &)'
        with
        [
            _Ty=int
        ]
        при попытке сопоставить список аргументов '(int, int)'
потом я решил убрать строку
using namespace std;
Ии... все заработало. Вопрос. Почему оно не может сопоставить типы при строке using namespace std; ?

Решение задачи: «Шаблоны - Неоднозначный вызов перегруженной функции»

textual
Листинг программы
using std::cout;
using std::cin;
using std::endl;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.444 из 5
Похожие ответы