Block-Structured AMR Software Framework
AMReX_TypeList.H File Reference
#include <AMReX_Config.H>
#include <utility>

Go to the source code of this file.

Classes

struct  amrex::TypeList< Ts >
 Struct for holding types. More...
 
struct  amrex::detail::TypeListGet< I, TypeList< Head, Tail... > >
 
struct  amrex::detail::TypeListGet< 0, TypeList< Head, Tail... > >
 

Namespaces

 amrex
 
 amrex::detail
 

Typedefs

template<std::size_t I, typename T >
using amrex::TypeAt = typename detail::TypeListGet< I, T >::type
 Type at position I of a TypeList. More...
 
template<template< class... > class TParam, class... Types>
using amrex::TypeMultiplier = TypeAt< 0, decltype(detail::TApply< TParam >((TypeList<>{}+...+detail::SingleTypeMultiplier(Types{}))))>
 Return the first template argument with the later arguments applied to it. Types of the form T[N] are expanded to T, T, T, T, ... (N times with N >= 1). More...
 

Functions

template<typename TL , typename F , std::size_t... N>
constexpr void amrex::detail::for_each_impl (F const &f, std::index_sequence< N... >)
 
template<typename TL , typename F , std::size_t... N>
constexpr bool amrex::detail::for_each_until_impl (F const &f, std::index_sequence< N... >)
 
template<typename... Ts, typename F >
constexpr void amrex::ForEach (TypeList< Ts... >, F &&f)
 For each type t in TypeList, call f(t) More...
 
template<typename... Ts, typename F >
constexpr bool amrex::ForEachUntil (TypeList< Ts... >, F &&f)
 For each type t in TypeList, call f(t) until true is returned. More...
 
template<typename... As, typename... Bs>
constexpr auto amrex::operator+ (TypeList< As... >, TypeList< Bs... >)
 Concatenate two TypeLists. More...
 
template<typename... Ls, typename A >
constexpr auto amrex::single_product (TypeList< Ls... >, A)
 
template<typename LLs , typename... As>
constexpr auto amrex::operator* (LLs, TypeList< As... >)
 
template<typename... Ls>
constexpr auto amrex::CartesianProduct (Ls...)
 Cartesian Product of TypeLists. More...
 
template<class T , std::size_t N>
constexpr auto amrex::detail::SingleTypeMultiplier_impl ()
 
template<class T , std::size_t N>
constexpr auto amrex::detail::SingleTypeMultiplier (const T(&)[N])
 
template<class T >
constexpr auto amrex::detail::SingleTypeMultiplier (T)
 
template<template< class... > class TParam, class... Args>
constexpr auto amrex::detail::TApply (TypeList< Args... >)