From b656ad280092832ce47df3b7752be0a8052fcd20 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Tue, 25 Oct 2022 17:50:04 +0100 Subject: Add AnyPtr for accepting pointers of any kind into a function --- lib/stdTypeDefs.hpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/lib/stdTypeDefs.hpp b/lib/stdTypeDefs.hpp index 8d17c33..317cdb3 100644 --- a/lib/stdTypeDefs.hpp +++ b/lib/stdTypeDefs.hpp @@ -3,7 +3,34 @@ #include #include +template struct AnyPtr { + // cppcheck-suppress noExplicitConstructor + AnyPtr(T * p) : ptr {p} { } + // cppcheck-suppress noExplicitConstructor + template AnyPtr(const S & p) : ptr {p.get()} { } + auto + get() const + { + return ptr; + } + auto + operator->() const + { + return ptr; + } + auto & + operator*() const + { + return *ptr; + } + +private: + T * ptr; +}; + template struct StdTypeDefs { + using AnyPtr = ::AnyPtr; + using AnyCPtr = ::AnyPtr; using Ptr = std::shared_ptr; using CPtr = std::shared_ptr; using WPtr = std::weak_ptr; -- cgit v1.2.3