zne*_*eak 8 c++ exception c++14
异常使用对象的静态类型来复制 - 初始化抛出的对象.例如:
struct foo
{
foo() = default;
foo(const foo&) = delete;
};
int main()
{
throw foo();
}
Run Code Online (Sandbox Code Playgroud)
Clang++ --std=c++14抱怨明确删除的拷贝构造函数不能使用.为什么不能进行移动初始化呢?
将代码修改为以下内容:
struct foo
{
foo() = default;
foo(const foo&) = delete;
foo(foo&&) = default;
};
int main()
{
throw foo();
}
Run Code Online (Sandbox Code Playgroud)
阅读本文,"隐式声明的移动构造函数"一节.