0

有没有办法删除我所有功能的“垂直”版本,而无需将“命中”行更改为“固定”?

是的,我的程序运行良好,但我认为是否有办法从这个版本的所有功能中获得帮助。

请记住,这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);
}
4

1 回答 1

5

我在理解你想要什么时遇到了一些麻烦,但这可能是一个选择:

template<typename T>
void func(T &&m) {
  // ...
}

T&&被称为“通用引用”,因为由于引用折叠规则,它将绑定到左值和右值。

于 2013-04-06T18:58:32.727 回答