error C2668: “swap”: 对重载函数的调用不明确

当出现error C2668: “swap”: 对重载函数的调用不明确_第1张图片这个错误提示的时候,很有可能代码并没有问题,而是编译器的设定问题。

测试代码如下:

#include 

using namespace std;

//函数模板
template
void swap(T &a,T &b)
{
	T temp;
	temp = a;
	a = b;
	b = temp;
}

int main(int ,char **)
{
	int a = 1, b = 2;
	cout << a << "  " << b << endl;
	swap(a,b);


	return 0;
}
貌似有人说过,之所以这样是因为用户自己定义的swap()函数与STL库定义的函数重载出现了问题,经过测试把上述代码中的swap()函数改名为swap2()即可以顺利通过编译并调用执行。



你可能感兴趣的:(C++语言学习)