Я передаю неназванный временный объект функции, определенной с параметром const ref. Копировать экземпляр класса является приватным, и я получаю ошибку компиляции. Я не понимаю, почему в этой ситуации вызывается конструктор копирования.
class A {
public:
A(int i) {}
private:
A(const A&) {}
};
void f(const A& a)
{
}
int main()
{
f(A(1)); // <-- error here: 'A::A(const A&)' is private
}
Как и ожидалось, когда я меняю main на:
A a(1);
f(a);
он работает.
EDIT: компилятор gcc 4.1.2