我正面临一个问题,我相信很多其他人必须面对的问题
如何处理模板中的文字?
请参考我的代码:
template<typename T, typename U>
static void Swap( T& a, U& b )
{
T temp;
temp = a;
a = (T) b;
b = temp;
}
int main()
{
int i = 10, j = 20;
//! Working
Swap<int,int>(i,j);
int p = 50; double q = 100.0;
//! Working
Swap<int,double>(p,q);
//How to handle this case ?
Swap<int,int>(5,10);
return 0;
}
答案 0 :(得分:2)
由于5
和10
是rvalues,因此无法通过引用传递它们。
此外,这个电话甚至没有意义:
Swap<int,int>(5,10);
您希望5
和10
之间互换或是什么?
答案 1 :(得分:2)
问题是您正在尝试将临时绑定到引用,这是标准所不允许的 您只能将临时值绑定到const引用。鉴于你应该重新思考你的逻辑。