54 struct CopyableUniquePtr
55 :
private std::shared_ptr<UniquePtrWithLambda<void>>
58 using parent_t = std::shared_ptr<UniquePtrWithLambda<void>>;
64 [[nodiscard]]
auto get()
const ->
void const *;
67 using SharedPtr = std::shared_ptr<void const>;
77 WriteBuffer(std::shared_ptr<void const> ptr);
80 WriteBuffer(WriteBuffer &&) noexcept;
81 WriteBuffer(WriteBuffer const &) = delete;
82 WriteBuffer &operator=(WriteBuffer &&) noexcept;
83 WriteBuffer &operator=(WriteBuffer const &) = delete;
85 WriteBuffer const &operator=(
std::shared_ptr<
void const> ptr);
88 void const *get() const;
90 template <typename variant_t>
91 auto as_variant() -> variant_t &
93 return *std::any_cast<variant_t>(&m_buffer);
96 template <
typename variant_t>
97 auto as_variant() const -> variant_t const &
99 return *std::any_cast<variant_t>(&m_buffer);