From 46680c87a8e400c8ba221c51d2d24fe93e58840c Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Tue, 25 May 2021 15:15:44 +0200 Subject: [PATCH] Added RefWhenNeeded --- CMakeLists.txt | 1 + cpputils_src.pri | 1 + src/refwhenneeded.h | 29 +++++++++++++++++++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 src/refwhenneeded.h diff --git a/CMakeLists.txt b/CMakeLists.txt index db3a76b..cb29dca 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,7 @@ set(headers src/cpptypesafeenum.h src/cpputils.h src/delayedconstruction.h + src/refwhenneeded.h src/strutils.h ) diff --git a/cpputils_src.pri b/cpputils_src.pri index 7fc0df9..2f77f6f 100644 --- a/cpputils_src.pri +++ b/cpputils_src.pri @@ -8,6 +8,7 @@ HEADERS += \ $$PWD/src/cpptypesafeenum.h \ $$PWD/src/cpputils.h \ $$PWD/src/delayedconstruction.h \ + $$PWD/src/refwhenneeded.h \ $$PWD/src/strutils.h SOURCES += \ diff --git a/src/refwhenneeded.h b/src/refwhenneeded.h new file mode 100644 index 0000000..30994ed --- /dev/null +++ b/src/refwhenneeded.h @@ -0,0 +1,29 @@ +#pragma once + +// system includes +#include + +namespace cpputils { +template struct RefWhenNeeded { using T = const X &; RefWhenNeeded() = delete; ~RefWhenNeeded() = delete; }; +template<> struct RefWhenNeeded { using T = bool; RefWhenNeeded() = delete; ~RefWhenNeeded() = delete; }; +template<> struct RefWhenNeeded { using T = int8_t; RefWhenNeeded() = delete; ~RefWhenNeeded() = delete; }; +template<> struct RefWhenNeeded { using T = uint8_t; RefWhenNeeded() = delete; ~RefWhenNeeded() = delete; }; +template<> struct RefWhenNeeded { using T = int16_t; RefWhenNeeded() = delete; ~RefWhenNeeded() = delete; }; +template<> struct RefWhenNeeded { using T = uint16_t; RefWhenNeeded() = delete; ~RefWhenNeeded() = delete; }; +template<> struct RefWhenNeeded { using T = int32_t; RefWhenNeeded() = delete; ~RefWhenNeeded() = delete; }; +template<> struct RefWhenNeeded { using T = uint32_t; RefWhenNeeded() = delete; ~RefWhenNeeded() = delete; }; +template<> struct RefWhenNeeded { using T = int64_t; RefWhenNeeded() = delete; ~RefWhenNeeded() = delete; }; +template<> struct RefWhenNeeded { using T = uint64_t; RefWhenNeeded() = delete; ~RefWhenNeeded() = delete; }; +template<> struct RefWhenNeeded { using T = long; RefWhenNeeded() = delete; ~RefWhenNeeded() = delete; }; +template<> struct RefWhenNeeded { using T = unsigned long; RefWhenNeeded() = delete; ~RefWhenNeeded() = delete; }; +template<> struct RefWhenNeeded { using T = float; RefWhenNeeded() = delete; ~RefWhenNeeded() = delete; }; +template<> struct RefWhenNeeded { using T = double; RefWhenNeeded() = delete; ~RefWhenNeeded() = delete; }; + +//template struct RefWhenNeeded { using T = X; RefWhenNeeded() = delete; ~RefWhenNeeded() = delete; }; +//template<> struct RefWhenNeeded { using T = const JsonObjectConst &; RefWhenNeeded() = delete; ~RefWhenNeeded() = delete; }; +//template<> struct RefWhenNeeded> { using T = const std::optional &; RefWhenNeeded() = delete; ~RefWhenNeeded() = delete; }; +//template<> struct RefWhenNeeded { using T = const JsonArrayConst &; RefWhenNeeded() = delete; ~RefWhenNeeded() = delete; }; +//template<> struct RefWhenNeeded { using T = const JsonVariantConst &; RefWhenNeeded() = delete; ~RefWhenNeeded() = delete; }; +//template<> struct RefWhenNeeded { using T = const std::string &; RefWhenNeeded() = delete; ~RefWhenNeeded() = delete; }; +//template<> struct RefWhenNeeded> { using T = const std::optional &; RefWhenNeeded() = delete; ~RefWhenNeeded() = delete; }; +} // namespace cpputils