如果我定义一个接受右值引用参数的函数:
template <typename T>
void fooT(T &&x) {}
我可以使用 GCC 4.5 调用它,使用a
,ar
或arr
:
int a, &ar = a, &&arr = 7;
fooT(a); fooT(ar); fooT(arr);
但是,调用类似的非模板函数,
void fooInt(int &&x) {}
使用这三个参数中的任何一个都将失败。我正准备加强我的知识forward
,但这让我偏离了方向。也许是 GCC 4.5;我惊讶地发现A Brief Introduction to Rvalue References中的第一个示例也给出了编译错误:
A a;
A&& a_ref2 = a; // an rvalue reference