// License: Modified MIT (NON-AI) // See the LICENSE file in the root directory for license information. // Copyright 2025 Timothy Prepscius #pragma once #include "PtrOrValue.h" namespace tjp::core { template struct PtrOnly { const T *p = nullptr; const T *get() const { return p; } PtrOnly(const T *p_) : p(p_) {} PtrOnly(const PtrOnly &rhs) : p(rhs.p) {} PtrOnly(PtrOnly &&rhs) : p(std::move(rhs.p)) {} auto *operator ->() const { return get(); } const T &operator *() const { return *get(); } operator const T&() const { return *get(); } } ; template PtrOnly makePtrOnly(const T *t) { return PtrOnly(t); } template PtrOnly makePtrOnly(const T &t) { return PtrOnly(t); } } // namespace