是否存在具有基础堆分配的可选类型

Pol*_*mer 0 c++

在C++标准库中是否有一个类型,其语义与之相同optional,但其底层值存储在堆上?提升中有这样的类型吗?如果没有,您将如何实现此行为?

我想用RAII托管分支和值语义来构建树结构,如下所示:

struct tree{
    int val;
    heap_optional<tree> left;
    heap_optional<tree> right;
};
Run Code Online (Sandbox Code Playgroud)

编辑:

想法是可选的将在lvalue引用上具有赋值运算符.具有默认赋值的上述结构将按原样工作,无需额外实现.如果我使用std::unique_ptr它只有移动赋值,那么我将不得不在包含结构中实现所有赋值运算符和朋友.

Tom*_*ava 7

std::unique_ptr 是你在找什么.

  • 但是当您将其分配给其他东西时,`std::unique_ptr` 不会复制它的基础值。 (2认同)
  • @Polymer为什么要为二叉树节点执行此操作? (2认同)
  • @Neil Butterworth 使树具有价值语义。所以我可以让树 a = b 使用默认赋值运算符。 (2认同)