Я передаю безымянный временный объект функции, определенной параметром const ref. Копирующий ctor класса является частным, и я получаю ошибку компиляции. Я не понимаю, почему в этой ситуации вызывается конструктор копирования.
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
}
Как и ожидалось, когда я меняю основной на:
A a(1);
f(a);
, он работает.
РЕДАКТИРОВАТЬ: компилятор - gcc 4.1.2