8namespace opcua::detail {
13 constexpr UniqueOrRawPtr() =
default;
15 explicit constexpr UniqueOrRawPtr(std::unique_ptr<T>&& ptr) noexcept
16 : uniquePtr_{std::move(ptr)},
17 rawPtr_{uniquePtr_.get()} {}
19 explicit constexpr UniqueOrRawPtr(T* ptr) noexcept
20 : uniquePtr_{
nullptr},
23 constexpr UniqueOrRawPtr& operator=(std::unique_ptr<T>&& ptr)
noexcept {
24 uniquePtr_ = std::move(ptr);
25 rawPtr_ = uniquePtr_.get();
29 constexpr UniqueOrRawPtr& operator=(T* ptr)
noexcept {
35 constexpr T& operator*() noexcept {
39 constexpr const T& operator*() const noexcept {
43 constexpr T* operator->() noexcept {
47 constexpr const T* operator->() const noexcept {
51 constexpr T* get() noexcept {
55 constexpr const T* get() const noexcept {
59 constexpr bool operator==(T* ptr)
const noexcept {
63 constexpr bool operator!=(T* ptr)
const noexcept {
68 std::unique_ptr<T> uniquePtr_;