#include <AMReX_Config.H>
#include <utility>
Go to the source code of this file.
|
| template<std::size_t I, typename T > |
| using | amrex::TypeAt = typename detail::TypeListGet< I, T >::type |
| | Type at position I of a TypeList.
|
| |
| template<template< class... > class TParam, class... Types> |
| using | amrex::TypeMultiplier = TypeAt< 0, decltype(detail::TApply< TParam >((TypeList<>{}+...+detail::SingleTypeMultiplier(std::declval< 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). Types of the form TypeArray<T,N> are expanded to T, T, T, T, ... (N times with N >= 0).
|
| |
|
| template<typename... Ts, typename F > |
| constexpr void | amrex::ForEach (TypeList< Ts... >, F &&f) |
| | For each type t in TypeList, call f(t)
|
| |
| 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.
|
| |
| template<typename... As, typename... Bs> |
| constexpr auto | amrex::operator+ (TypeList< As... >, TypeList< Bs... >) |
| | Concatenate two TypeLists.
|
| |
| 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.
|
| |