GCC 4.5 doesn't let me do this:
class foo {
public:
foo() = default;
private:
foo(foo const&) = default;
foo& operator=(foo const&) = default;
};
It complains that:
error: 'foo::foo(const foo&)' declared with non-public access cannot be defaulted in the class body
error: 'foo& foo::operator=(const foo&)' declared with non-public access cannot be defaulted in the class body
However, GCC 4.6 lets me do it. Which one is correct?
There is nothing in N3291 that says you cannot declare something private
and default
. Note that this was a change to the specification, in section 8.4.2, paragraph 2; earlier versions said that they must be public.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With