有没有办法删除所有函数的'plumb'版本,而无需将'hit'行更改为'fixed'?
是的,我的程序运行正常,但我想如果有办法从这个版本的所有函数中获取。
请注意,int
在我的程序中不是int
,而是可以是对象(例如container_reference<std::array<double,4>>
)或引用(例如std::array<double,4> &
)的类型别名
void func(int &&m) { cout << "rvalue: " << m << endl; }
void func(int &m) { cout << "lvalue: "; func(std::move(m)); } // PLUMB!
int main()
{
int a = 5;
func(a); // HIT!
func(std::move(a)); // FIXED!
func(6);
func(a + 5);
}
答案 0 :(得分:5)
我很难理解你想要什么,但这可能是一个选择:
template<typename T>
void func(T &&m) {
// ...
}
T&&
被称为“通用引用”,因为它会因参考折叠规则而绑定到左值和右值。