diff --git a/source/tinystl/type_traits/composite_type_categories/is_reference.h b/source/tinystl/type_traits/composite_type_categories/is_reference.h new file mode 100644 index 0000000..a049922 --- /dev/null +++ b/source/tinystl/type_traits/composite_type_categories/is_reference.h @@ -0,0 +1,12 @@ +#pragma once + +#include "tinystl/type_traits/primary_type_categories/is_lvalue_reference.h" +#include "tinystl/type_traits/primary_type_categories/is_rvalue_reference.h" + +namespace tinystl { +template +struct is_reference : bool_constant::value || is_rvalue_reference::value> {}; + +template +inline constexpr bool is_reference_v = is_reference::value; +} \ No newline at end of file diff --git a/source/tinystl/type_traits/primary_type_categories/is_lvalue_reference.h b/source/tinystl/type_traits/primary_type_categories/is_lvalue_reference.h new file mode 100644 index 0000000..67593d9 --- /dev/null +++ b/source/tinystl/type_traits/primary_type_categories/is_lvalue_reference.h @@ -0,0 +1,13 @@ +#pragma once + +#include "tinystl/type_traits/helper_classes/integral_constant.h" + +namespace tinystl { +template +struct is_lvalue_reference : false_type {}; +template +struct is_lvalue_reference : true_type {}; + +template +inline constexpr bool is_lvalue_reference_v = is_lvalue_reference::value; +} \ No newline at end of file diff --git a/source/tinystl/type_traits/primary_type_categories/is_rvalue_reference.h b/source/tinystl/type_traits/primary_type_categories/is_rvalue_reference.h new file mode 100644 index 0000000..7885e79 --- /dev/null +++ b/source/tinystl/type_traits/primary_type_categories/is_rvalue_reference.h @@ -0,0 +1,13 @@ +#pragma once + +#include "tinystl/type_traits/helper_classes/integral_constant.h" + +namespace tinystl { +template +struct is_rvalue_reference : false_type {}; +template +struct is_rvalue_reference : true_type {}; + +template +inline constexpr bool is_rvalue_reference_v = is_rvalue_reference::value; +} \ No newline at end of file