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