我有一堂课Foo
。
我想要一个函数,TakeFoo
它接受一个Foo
对象并调用它的方法。这是我开始的:
void TakeFoo (const Foo&);
但是,我还需要能够在其上调用非常量方法。所以我把它改成这样:
void TakeFoo (Foo&);
但是,当我尝试将临时传递给它时,这会导致警告。所以我创建了一个重载:
void TakeFoo (Foo&&);
但是,我想重用代码,所以TakeFoo(Foo&&)
基本上是这样做的:
void TakeFoo (Foo&& FooBar)
{
TakeFoo(FooBar);
}
为什么这也不会引起警告,因为我仍在对临时对象进行非常量引用?