模板功能仅适用于VS

时间:2019-11-13 16:58:02

标签: c++ visual-studio dev-c++

我已经编写了带有模板的代码,但是它仅适用于Visual Studio(不适用于Dev c ++或任何在线编译器。我不明白为什么。

#include <iostream>
using namespace std; 

template <class Q1,class Q2,class Q3> // but when i write instead of 3 classes  1 class it will work 
                                      //everywhere, how could it be possible?

void min(Q1 a, Q2 b, Q3 c) {
    if (a <= b && a <= c) { 
        cout << "\nMinimum number is: " << a << endl; }
    if (b < a && b < c) {
        cout << "\nMinimum number is: " << b << endl; }
    if (c < a && c < b) { 
        cout << "\nMinimum number is: " << c << endl; }

}

int main()
{

    double x,y,z;
    cout << "Enter 3 numbers: " << endl;
    cin >> x;
    cin >> y;
    cin >> z;

    min(x, y, z);
}

1 个答案:

答案 0 :(得分:4)

函数std::min被隐式使用。这是因为重载解析比模板功能更支持非模板功能,并且某些编译器工具集允许std::min通过您拥有的#include可以访问(C ++标准对此唯一要说的是std::min一旦到达#include <algorithm>就必须可用)。

删除using namespace std;是一个解决方法,而且还是个好主意。教程经常使用它来使内容清晰,但是很少在生产代码中找到它。