Одинаковые блоки кода с шаблоном функции скомпилированы нормально в g ++, но ошибка в VC6, почему? - PullRequest
1 голос
/ 05 марта 2012

Я читаю главу «Шаблоны функций» C ++ Primer, 3-е издание , и когда я попытался следовать примеру, я обнаружил, что код почти такой же, как в книге во время компиляции произошла ошибка VC6 но все нормально под g ++. Я не знаю почему?

Вот код:

#include <iostream>
using namespace std;

template<typename T1, typename T2, typename T3>
T1 my_min(T2 a, T3 b)
{
    return a>b?b:a;
}

int main()
{
    int (*fp)(int, int) = &my_min<int>;
    cout<<fp(3,5)<<endl;
    return 0;
}

Ошибка произошла при VC6, выглядит как:

error C2440: 'initializing' : cannot convert from '' to 'int (__cdecl *)(int,int)'
None of the functions with this name in scope match the target type

1 Ответ

7 голосов
/ 05 марта 2012

VC6 - это древний компилятор, которому крайне не хватает поддержки шаблонов, поэтому он не может справиться с юридическим кодом при многих обстоятельствах.Вы должны отказаться от него и загрузить вместо него VS 2010 Express .

...