【发布时间】:2016-07-27 05:00:44
【问题描述】:
程序如下:
#include <iostream>
using namespace std;
template <typename F, typename T1, typename T2>
void flip2(F f, T1 &&t1, T2 &&t2)
{
f(t2, t1);
}
void g(int &&i, int &j)
{
cout << i << " " << j << endl;
}
int main(void)
{
int i = 1;
flip2(g, i, 42);
}
编译器抱怨:
error: rvalue reference to type 'int' cannot bind to lvalue of type 'int'
但据我了解,由于T2是用int实例化的,那么t2的类型就是int&&,所以应该允许它传递给函数g的第一个参数(@987654328 @)。
我的理解有什么问题?
【问题讨论】:
标签: c++ templates c++11 perfect-forwarding