标题说明了一切。
第一种情况 f(const X&) 是老式的 const 引用参数。
但是,当采用可变引用参数时,为什么不总是使用 X&& 呢?这样,客户端代码可以使用临时值或常规左值,而不是 f() 指示用法。
编辑:我的草率,对不起。我的意思是,给定 fc(const X&) 和 fm(X&&),我们需要 fm(X&) 吗?
编辑:示例:我使用无状态装饰器作为参数传递:
class Base64Writer: public Writer {
public:
Base64Writer(Writer& w): w_(w) {}
private:
virtual void doWrite() override;
Writer& w_;
}
void func(Writer&& w) { w.doWrite(); }
// to be called as
Writer wr = ...;
func(Base64Writer(wr));