Могу ли я по умолчанию использовать частный конструктор в теле класса или нет?

GCC 4.5 не позволяет мне этого сделать:

class foo {
public:
    foo() = default;

private:
    foo(foo const&) = default;
    foo& operator=(foo const&) = default;
};

Он жалуется, что:

error: 'foo :: foo (const foo &)' объявлено с закрытым доступом не может быть задано по умолчанию в теле класса
ошибка: 'foo & foo :: operator = (const foo &)', объявленный с закрытым доступом, не может быть задан по умолчанию в теле класса

Однако GCC 4.6 позволяет мне это сделать. Какой из них правильный?

11
задан Kerrek SB 29 August 2011 в 00:20
поделиться