From 88d2d5c83be3c588a2f6a6aa4fdeaf25da4776a1 Mon Sep 17 00:00:00 2001 From: Tobias Zindl Date: Fri, 13 Oct 2023 18:52:30 +0200 Subject: [PATCH] :sparkles: add remove_reference trait --- include/zll/meta/traits/remove_reference.hpp | 19 +++++++++++++++++++ include/zll/meta/type_traits.hpp | 3 +++ 2 files changed, 22 insertions(+) create mode 100644 include/zll/meta/traits/remove_reference.hpp diff --git a/include/zll/meta/traits/remove_reference.hpp b/include/zll/meta/traits/remove_reference.hpp new file mode 100644 index 0000000..11c547a --- /dev/null +++ b/include/zll/meta/traits/remove_reference.hpp @@ -0,0 +1,19 @@ +#ifndef ZLL_META_TRAITS_REMOVEREFERENCE_HPP +#define ZLL_META_TRAITS_REMOVEREFERENCE_HPP + +#include "zll/meta/traits/remove_cv.hpp" + +namespace zll { +namespace meta { +// clang-format off +template struct remove_reference { typedef T type; }; +template struct remove_reference { typedef T type; }; +// clang-format on +template +struct remove_cvref { + typedef typename zll::meta::remove_cv::type>::type type; +}; +} // namespace meta +} // namespace zll + +#endif // ZLL_META_TRAITS_REMOVEREFERENCE_HPP diff --git a/include/zll/meta/type_traits.hpp b/include/zll/meta/type_traits.hpp index 95fe45d..2bdd8e2 100644 --- a/include/zll/meta/type_traits.hpp +++ b/include/zll/meta/type_traits.hpp @@ -15,15 +15,18 @@ #include "zll/meta/traits/is_const.hpp" #include "zll/meta/traits/is_enum.hpp" #include "zll/meta/traits/is_floating_point.hpp" +#include "zll/meta/traits/is_function.hpp" #include "zll/meta/traits/is_integral.hpp" #include "zll/meta/traits/is_member_pointer.hpp" #include "zll/meta/traits/is_object.hpp" #include "zll/meta/traits/is_pointer.hpp" +#include "zll/meta/traits/is_reference.hpp" #include "zll/meta/traits/is_same.hpp" #include "zll/meta/traits/is_scalar.hpp" #include "zll/meta/traits/is_union.hpp" #include "zll/meta/traits/remove_cv.hpp" +#include "zll/meta/traits/remove_reference.hpp" #endif // ZLL_TYPETRAITS_HPP