Этот код испускает error C2248: 'A::A' : cannot access private member declared in class 'A'
в VS2010, хотя RVO не требует конструктора копирования. Чтобы доказать это, просто сделайте общедоступным объявление A(const A&);
ниже, и код будет выполняться без проблем, даже без определения конструктора копирования.
class A
{
int i;
A(const A&);
public:
A() : i(1) {}
};
A f() { return A(); }
int main()
{
A a;
a = f();
}