1
0
forked from Alepha/Alepha

Meta traits for set and map.

This commit is contained in:
2021-10-15 05:20:08 -04:00
parent 525c5b7be8
commit 6de408590e
2 changed files with 68 additions and 0 deletions

34
Meta/is_map.h Normal file
View File

@ -0,0 +1,34 @@
static_assert( __cplusplus > 201700, "C++17 Required" );
#pragma once
#include <Alepha/Alepha.h>
#include <type_traits>
#include <map>
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;
}
}

34
Meta/is_set.h Normal file
View File

@ -0,0 +1,34 @@
static_assert( __cplusplus > 201700, "C++17 Required" );
#pragma once
#include <Alepha/Alepha.h>
#include <type_traits>
#include <set>
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;
}
}