在测试VS2015 C++编译器时,我偶然发现了一个关于default
关键字的奇怪错误。如果我做的:在处理VS2015中的`default`关键字时可能存在的错误C++
struct Dummy
{
Dummy() = default;
Dummy(const Dummy &) = delete;
};
int main()
{
const Dummy& ref = Dummy();
return 0;
}
我得到
错误C2280: '假人::虚拟(常量假&)':试图引用删除的功能
注:看到虚拟的”的声明: :假”
但是,如果我用一个空的构造
struct Dummy
{
Dummy() {}
Dummy(const Dummy &) = delete;
};
int main()
{
const Dummy& ref = Dummy();
return 0;
}
为什么在VS2015中使用默认构造函数尝试在g ++或clang中不使用复制构造函数?
你从'const dummy&r2 {Dummy()};'得到了什么? –
相关:[复制/移动elision与显式删除的复制/移动构造函数](http:// stackoverflow。com/questions/20589622) –
请参阅http://stackoverflow.com/questions/31264984/c-compiler-error-c2280-attempting-to-reference-a-deleted-function-in-visual –