diff --git a/Meta/is_map.h b/Meta/is_map.h new file mode 100644 index 0000000..84afed7 --- /dev/null +++ b/Meta/is_map.h @@ -0,0 +1,34 @@ +static_assert( __cplusplus > 201700, "C++17 Required" ); + +#pragma once + +#include + +#include +#include + +namespace Alepha::Hydrogen::Meta +{ + inline namespace exports { inline namespace type_traits {} } + + namespace detail::type_traits::is_map + { + inline namespace exports + { + template< typename T > + struct is_map : std::false_type {}; + + template< typename T, typename ... Args > + struct is_map< std::map< T, Args... > > : std::true_type {}; + + template< typename T > + constexpr bool is_map_v= is_map< T >::value; + } + } + + namespace exports::type_traits + { + using namespace detail::type_traits::is_map::exports; + } +} + diff --git a/Meta/is_set.h b/Meta/is_set.h new file mode 100644 index 0000000..3219e0c --- /dev/null +++ b/Meta/is_set.h @@ -0,0 +1,34 @@ +static_assert( __cplusplus > 201700, "C++17 Required" ); + +#pragma once + +#include + +#include +#include + +namespace Alepha::Hydrogen::Meta +{ + inline namespace exports { inline namespace type_traits {} } + + namespace detail::type_traits::is_set + { + inline namespace exports + { + template< typename T > + struct is_set : std::false_type {}; + + template< typename T, typename ... Args > + struct is_set< std::set< T, Args... > > : std::true_type {}; + + template< typename T > + constexpr bool is_set_v= is_set< T >::value; + } + } + + namespace exports::type_traits + { + using namespace detail::type_traits::is_set::exports; + } +} +