在 C++03 中是否可以使用非 const 右值引用?

Is a non-const rvalue reference possible in C++03?

是否可以将从函数返回的对象绑定到 C++11 之前该类型的纯虚拟超类型的非常量引用?

例如,假设我有这个代码:

class IFoo
{
public:

    virtual void bar() =0;

};

class Foo : public IFoo
{
public:

    virtual void bar()
    { cout << "Hello, World!" << endl; };

};

在 C++11 中我可以这样做:

IFoo && f = Foo();
f.bar();

我知道,我可以在 C++11 之前使用以下内容:

const IFoo & f = Foo();

但是我不允许在 f 上调用任何非常量方法。有没有办法在 C++03 中解决这个问题?

您可以使用常量转换:

const IFoo & f0 = Foo();
IFoo & f = const_cast<IFoo &>(f0);
f.bar();
Foo f_;
IFoo& f=f_;

这解决了您的示例问题。它可能无法解决您的实际问题。