c++ - 是否有具有底层堆分配的可选类型

标签 c++

是否有一种类型,在C++标准库中,其语义与optional相同,但其底层值存储在堆中? boost里有这种类型吗?如果不是,您将如何实现此行为?

我想制作具有 RAII 管理分支和值语义的树结构,如下所示:

struct tree{
    int val;
    heap_optional<tree> left;
    heap_optional<tree> right;
};

编辑:

想法是可选的将在 lvalue 引用上有一个赋值运算符。上面的结构,默认赋值,不需要额外的实现就可以正常工作。如果我使用 std::unique_ptr 它只有移动赋值,所以我必须在包含结构中实现所有赋值运算符和 friend 。

最佳答案

std::unique_ptr正是您要找的。

关于c++ - 是否有具有底层堆分配的可选类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50705071/

相关文章:

c++ - 不能在 C++ 中使用我的对象 push_front() 标准库列表

c++ - Qt QWidget 多个实例

c++ - 使用嵌套类时不完整/未定义的类型

java - 静态类型和编写简单的矩阵库

c++ - 在 C++ 中使用 "#define"的替代方案?为什么会被人嫌弃?

c++ - 错误 : template parameter redeclared here as 'false' . 一些模板魔法

c++ - 'function1' 和 'function2' 之间的歧义 (C++)

c++ - 在基于 for 循环的范围内复制省略

c++ - 字符串操作,转换时在字符串开头显示 0

c++ - 如何从数据库解析日期时间格式?