gpt4 book ai didi

c++ - 将 const std::unique_ptr 用于 pimpl 习惯用法

转载 作者:IT老高 更新时间:2023-10-28 22:14:47 25 4
gpt4 key购买 nike

Herb Sutter's talk at CppCon16他建议用 const std::unique_ptr 编写 pimpl idiom(大约 10 分钟)。

这应该如何与移动构造函数/赋值一起使用? c++ 17中有什么东西吗?我找不到任何东西。

最佳答案

如果您的类应该是永不为空的,那么非常量的唯一 ptr(具有默认移动/分配)是不合适的。 move ctor 和 move assign 都会清空 rhs。

一个 const unique ptr 将禁用这些自动方法,如果你想移动,你必须在 impl 中编写它(并在外面有点胶水)。

我会亲自编写一个具有我想要的语义的值 ptr(然后让编译器编写胶水),但是从 const unique_ptr 开始作为第一遍听起来是合理的。

如果你放宽永不为空,让它几乎永不为空,你现在必须推理很多方法的前提条件,以及可能的链式错误。

这种技术的最大成本,即返回值的困难,在 C++17 中消失了。

关于c++ - 将 const std::unique_ptr 用于 pimpl 习惯用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39703578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com