Lie*_*uwe 15 c++ stl move-semantics c++11
我有一个不可复制的类(即复制构造函数和赋值运算符被标记为'delete').我想将它们保存在std :: vector中.
它是一个RAII类,所以简单地存储指针或引用它不是我想要的.
我对新的初始化列表和移动构造函数的了解有限,这可能吗?
Jar*_*d42 21
是的你可以拥有std::vector<NotCopyable>if NotCopyable是可移动的:
struct NotCopyable
{
NotCopyable() = default;
NotCopyable(const NotCopyable&) = delete;
NotCopyable& operator = (const NotCopyable&) = delete;
NotCopyable(NotCopyable&&) = default;
NotCopyable& operator = (NotCopyable&&) = default;
};
int main()
{
std::vector<NotCopyable> v;
NotCopyable nc;
v.push_back(NotCopyable{});
v.emplace_back();
v.push_back(std::move(nc));
}
Run Code Online (Sandbox Code Playgroud)
实例.
| 归档时间: |
|
| 查看次数: |
7200 次 |
| 最近记录: |