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