Empirical
Classes | Namespaces | Typedefs | Functions | Variables
type_traits.h File Reference

Extensions on the standard library type traits to handle Empirical classes (such as Ptr). More...

#include <functional>
#include <tuple>
#include <utility>
#include "../base/Ptr.h"

Go to the source code of this file.

Classes

struct  emp::is_ptr_type< T >
 
struct  emp::is_ptr_type< T * >
 
struct  emp::is_ptr_type< T *const >
 
struct  emp::is_ptr_type< Ptr< T > >
 
struct  emp::remove_ptr_type< T >
 
struct  emp::remove_ptr_type< T * >
 
struct  emp::remove_ptr_type< Ptr< T > >
 
struct  emp::ptr_pair< T1, T2 >
 
struct  emp::ptr_pair< T, T >
 
struct  emp::ptr_pair< T, const T >
 
struct  emp::ptr_pair< const T, T >
 
struct  emp::detail::is_invocable_helper< Fn, Args >
 
struct  emp::is_invocable< Fn, Args >
 
struct  emp::__impl_variadics_type_traits::pack<... >
 
struct  emp::__impl_variadics_type_traits::FromPack< Variadic, Pack >
 
struct  emp::__impl_variadics_type_traits::FromPack< Variadic, pack< U... > >
 
struct  emp::__impl_variadics_type_traits::ToPack< Variadic, Pack >
 
struct  emp::__impl_variadics_type_traits::ToPack< Variadic, Variadic< U... > >
 
struct  emp::__impl_variadics_type_traits::variadic_contains_switch< bool, Needle, Haystack, Cmp >
 
struct  emp::__impl_variadics_type_traits::variadic_contains< Needle, Haystack, Cmp >
 
struct  emp::__impl_variadics_type_traits::variadic_contains< Needle, __impl_variadics_type_traits::pack<>, Cmp >
 
struct  emp::__impl_variadics_type_traits::variadic_contains< Needle, __impl_variadics_type_traits::pack< U0, U... >, Cmp >
 
struct  emp::__impl_variadics_type_traits::variadic_contains_switch< true, Needle, Haystack, Cmp >
 
struct  emp::__impl_variadics_type_traits::variadic_contains_switch< false, Needle, Haystack, Cmp >
 
struct  emp::variadic_contains< Needle, Haystack, Cmp >
 
struct  emp::variadic_contains< Needle, Variadic< U... >, Cmp >
 
struct  emp::variadic_concat< Variadics >
 
struct  emp::__impl_variadics_type_traits::variadic_concat< Variadic, Pack >
 
struct  emp::__impl_variadics_type_traits::variadic_concat< Variadic, pack< pack< U... > > >
 
struct  emp::__impl_variadics_type_traits::variadic_concat< Variadic, pack< pack< A... >, Variadic< B... >, Rest... > >
 
struct  emp::variadic_concat< Variadic< A... >, Rest... >
 
struct  emp::variadic_filter< Variadic, Filter >
 
struct  emp::__impl_variadics_type_traits::variadic_filter< Filtered, Unfiltered, Filter >
 
struct  emp::__impl_variadics_type_traits::variadic_filter_switch< bool, Filtered, Unfiltered, Filter >
 
struct  emp::__impl_variadics_type_traits::variadic_filter< Filtered, pack< Unfiltered... >, Filter >
 
struct  emp::__impl_variadics_type_traits::variadic_filter< pack< Filtered... >, pack< R0, Rest... >, Filter >
 
struct  emp::__impl_variadics_type_traits::variadic_filter_switch< false, pack< Filtered... >, pack< R0, Rest... >, Filter >
 
struct  emp::__impl_variadics_type_traits::variadic_filter_switch< true, pack< Filtered... >, pack< R0, Rest... >, Filter >
 
struct  emp::variadic_filter< Variadic< U... >, Filter >
 
struct  emp::variadic_remove_duplicates< Variadic, Cmp >
 
struct  emp::__impl_variadics_type_traits::variadic_remove_duplicates< Unique, Remaining, Cmp >
 
struct  emp::__impl_variadics_type_traits::variadic_remove_duplicates_switch< bool, Unique, Remaining, Cmp >
 
struct  emp::__impl_variadics_type_traits::variadic_remove_duplicates< Unique, pack< Rest... >, Cmp >
 
struct  emp::__impl_variadics_type_traits::variadic_remove_duplicates< pack< Unique... >, pack< R0, Rest... >, Cmp >
 
struct  emp::__impl_variadics_type_traits::variadic_remove_duplicates_switch< false, pack< Unique... >, pack< R0, Rest... >, Cmp >
 
struct  emp::__impl_variadics_type_traits::variadic_remove_duplicates_switch< true, pack< Unique... >, pack< R0, Rest... >, Cmp >
 
struct  emp::variadic_remove_duplicates< Variadic< U... >, Cmp >
 
struct  emp::variadic_union< Cmp,... >
 
struct  emp::__impl_variadics_type_traits::variadic_union< Cmp,... >
 
struct  emp::__impl_variadics_type_traits::variadic_union< Cmp, U >
 
struct  emp::__impl_variadics_type_traits::variadic_union< Cmp, U0, U1, U... >
 
struct  emp::variadic_union< Cmp, Variadic< U... > >
 
struct  emp::variadic_union< Cmp, Variadic< U0... >, U1, U... >
 
struct  emp::variadic_intersection< Cmp,... >
 
struct  emp::__impl_variadics_type_traits::variadic_intersection< Cmp,... >
 
struct  emp::__impl_variadics_type_traits::variadic_intersection< Cmp, U >
 
struct  emp::__impl_variadics_type_traits::variadic_intersection< Cmp, U0, U1, U... >
 
struct  emp::variadic_intersection< Cmp, Variadic< U... > >
 
struct  emp::variadic_intersection< Cmp, Variadic< U0... >, U1, U... >
 
struct  emp::variadic_index_of< Needle, Haystack, Cmp >
 
struct  emp::__impl_variadics_type_traits::variadic_index_of< I, Needle, Haystack, Cmp >
 
struct  emp::__impl_variadics_type_traits::variadic_index_ofSwitch< bool, size_t, Needle, Haystack, Cmp >
 
struct  emp::__impl_variadics_type_traits::variadic_index_ofSwitch< true, I, Needle, pack< U... >, Cmp >
 
struct  emp::__impl_variadics_type_traits::variadic_index_ofSwitch< false, I, Needle, pack< U... >, Cmp >
 
struct  emp::__impl_variadics_type_traits::variadic_index_of< I, Needle, pack< U0, U... >, Cmp >
 
struct  emp::variadic_index_of< Needle, Haystack< U... >, Cmp >
 

Namespaces

 emp
 If we are in emscripten, make sure to include the header.
 
 emp::detail
 
 emp::__impl_variadics_type_traits
 

Typedefs

template<typename T >
using emp::remove_ptr_type_t = typename remove_ptr_type< T >::type
 
template<template< typename... > class Variadic, typename Pack >
using emp::__impl_variadics_type_traits::FromPackType = typename FromPack< Variadic, Pack >::type
 
template<template< typename... > class Variadic, typename Pack >
using emp::__impl_variadics_type_traits::ToPackType = typename ToPack< Variadic, Pack >::type
 
template<typename... Variadics>
using emp::variadic_concat_t = typename variadic_concat< Variadics... >::type
 
template<typename Variadic , template< typename > class Filter>
using emp::variadic_filter_t = typename variadic_filter< Variadic, Filter >::type
 
template<typename Variadic , template< typename, typename > class... Cmp>
using emp::variadic_remove_duplicates_t = typename variadic_remove_duplicates< Variadic, Cmp... >::type
 
template<template< typename, typename > class Cmp, typename... U>
using emp::variadic_union_t = typename variadic_union< Cmp, U... >::type
 
template<template< typename, typename > class Cmp, typename... U>
using emp::variadic_intersection_t = typename variadic_intersection< Cmp, U... >::type
 

Functions

template<typename T >
constexpr bool emp::is_ptr_type_v (const T &)
 

Variables

template<typename Needle , typename Haystack , template< typename, typename > class... Cmp>
constexpr bool emp::variadic_contains_v
 
template<typename Needle , typename Haystack , template< typename, typename > class... Cmp>
static constexpr auto emp::variadic_index_of_v
 

Detailed Description

Extensions on the standard library type traits to handle Empirical classes (such as Ptr).

Note
This file is part of Empirical, https://github.com/devosoft/Empirical
Date
2016-2018