R. *_*des 11 c++ language-lawyer defaulted-functions c++11
GCC 4.5不允许我这样做:
class foo {
public:
foo() = default;
private:
foo(foo const&) = default;
foo& operator=(foo const&) = default;
};
Run Code Online (Sandbox Code Playgroud)
它抱怨说:
错误:使用非公共访问声明的'foo :: foo(const foo&)'在类体
错误中无法默认:使用非公共访问声明的'foo&foo :: operator =(const foo&)'不能默认为阶级身体
但是,GCC 4.6让我这样做.哪一个是正确的?
Nic*_*las 11
没有什么N3291,说你不能申报的东西private和default.请注意,这是对规范的更改,见第8.4.2节第2段; 早期版本说他们必须公开.