C++ 模板编译错误

标签 c++ templates

我是模板的新手,在阅读了如何制作模板后,我正在尝试对此进行测试,但我遇到了编译错误,而且我的代码看起来与我从中获取的示例完全相同。我创建了一个函数并且有一个模板,但是当我编译它时出现以下错误:

15 20 C:\Users\Fire\Desktop\test.cpp [Error] call of overloaded 'max(int, int)' is ambiguous

15 20 C:\Users\Fire\Desktop\test.cpp [Note] candidates are:

7 3 C:\Users\Fire\Desktop\test.cpp [Note] T max(T, T) [with T = int]

代码如下:

#include <iostream>
using namespace std;

template<typename T>
T max(T a, T b){
    return (a > b)? a: b;
}    

int main(){
    cout << max<int>(10, 40);
    return 0;
}

最佳答案

std::maxstd 命名空间的一部分。您正在执行 using namespace std 并在没有 std 限定符的情况下解析所有函数。这意味着您的代码中有 2 个版本的 max。你的和 namespace std。为了解决这个问题,never do using namespace std .

关于C++ 模板编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48655102/

相关文章:

c++ - C++ 范围是否支持 View 中的投影?

c++ - C++-如何为类模板声明函数模板好友

c++ - 模板模板参数什么时候成为标准的一部分?

c++ - 为什么这个对数组进行零初始化的模板化函数不能编译?

c++ - template<typename> 模板 <typename> 有什么作用?

C++ 可变参数模板特化(和 static_assert)

c++ - 无法从源代码构建 OpenCV

c++ - 具有多个非默认构造函数基础的单例派生类

c++ - Xcode 中的 CppUnit(或一般的 C++ 单元测试)

c++ - BlackJack 卡 vector c++/随机数