Files
core_zero/tjp/core/containers/PtrOnly.hpp
Timothy Prepscius 996151a56a flatten 20260225
2026-02-25 12:43:06 -05:00

60 lines
789 B
C++
Executable File

// 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<typename T>
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<typename T>
PtrOnly<T> makePtrOnly(const T *t)
{
return PtrOnly<T>(t);
}
template<typename T>
PtrOnly<T> makePtrOnly(const T &t)
{
return PtrOnly<T>(t);
}
} // namespace