如何处理模板中的文字?

时间:2012-04-02 15:14:52

标签: c++ templates literals

我正面临一个问题,我相信很多其他人必须面对的问题 如何处理模板中的文字?
请参考我的代码:

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;
}

2 个答案:

答案 0 :(得分:2)

由于510是rvalues,因此无法通过引用传递它们。

此外,这个电话甚至没有意义:

 Swap<int,int>(5,10);

您希望510之间互换或是什么?

答案 1 :(得分:2)

问题是您正在尝试将临时绑定到引用,这是标准所不允许的 您只能将临时值绑定到const引用。鉴于你应该重新思考你的逻辑。