模板函数只适用于 VS

Template function only works with VS

我用模板编写了代码,但它只适用于 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);
}

隐式使用了函数std::min。那是因为重载决议有利于非模板函数而不是模板函数,并且一些编译器工具集允许通过您拥有的 #includes 访问 std::min(C++ 标准在这个问题上唯一必须说的是一旦达到 #include <algorithm>std::min 就必须可用)。

删除 using namespace std; 是一种解决方法,无论如何都是一个好主意。教程经常为了清晰起见而使用它,但很少在生产代码中找到它。