GCC 4.5 не позволяет мне делать это:
class foo {
public:
foo() = default;
private:
foo(foo const&) = default;
foo& operator=(foo const&) = default;
};
Он жалуется, что:
error: 'foo:: foo (const foo &)', объявленный с непубличным доступом, не может быть дефолт в классе класса
error: 'foo & foo:: operator = (const foo &) ', объявленный с непубличным доступом, не может быть установлен по умолчанию в классе класса
Однако GCC 4.6 позволяет мне это делать. Какой из них правильный?