【发布时间】:2016-04-19 04:33:39
【问题描述】:
class A
{
int a;
public:
A(const A&) = delete;
A& operator=(const A&) = delete;
A() : a {0}
{ }
};
int main()
{
auto a = A {};
}
以上代码无法编译,我收到以下错误:C2280 'A::A(const A &)': 试图引用已删除的函数
我正在使用 Visual Studio 2015 编译器。我的理解是成员初始化语法编译器应该直接使用默认构造函数,这是在没有自动时会发生的情况,而我主要使用A a{}。所以我想知道在这种情况下与 auto 有什么关系。
【问题讨论】:
-
您仍然可以使用
auto&&。 -
如果没有
auto,这也不起作用,那么您的问题是什么? -
即使复制构造函数被省略,它也必须是可访问的。
标签: c++