|
template<typename TYPE > |
bool | olb::meta::is_aligned (const void *ptr) |
| Returns true iff address ptr is aligned w.r.t. TYPE.
|
|
template<typename T > |
std::string | olb::meta::name () |
| Returns distinct name on GCC, Clang and ICC but may return arbitrary garbage as per the standard.
|
|
template<typename WANTED , typename... TYPES> |
constexpr bool | olb::meta::contains () |
| Returns true iff a given type list contains WANTED.
|
|
template<typename... TYPES> |
bool | olb::meta::contains (std::type_index field) |
| Returns true iff a given type list contains a type index.
|
|
template<typename TYPES , typename F , std::size_t... INDICES> |
void | olb::meta::list_for_each_index (F &&f, std::index_sequence< INDICES... >) |
| Apply F to each element of meta::list listed in INDICES.
|
|
template<typename TUPLE , typename F , std::size_t... INDICES> |
void | olb::meta::tuple_for_each_index (TUPLE &tuple, F &&f, std::index_sequence< INDICES... >) |
| Apply F to each element of TUPLE listed in INDICES.
|
|
template<typename TUPLE , typename F > |
void | olb::meta::tuple_for_each (TUPLE &tuple, F &&f) |
| Apply F to each element of TUPLE.
|
|
template<typename T , unsigned D, typename U , std::size_t... INDICES> |
std::array< T, D > | olb::meta::make_array (U &&u, std::index_sequence< INDICES... >) |
| Return std::array<T,D> where T is initialized with a common value (helper)
|
|
template<typename T , unsigned D, typename U > |
std::array< T, D > | olb::meta::make_array (U &&u) |
| Return std::array<T,D> where T is initialized with a common value.
|
|
template<typename T , unsigned D, typename F , std::size_t... INDICES> |
std::array< T, D > | olb::meta::make_array_f (F &&f, std::index_sequence< INDICES... >) |
| Return std::array<T,D> where T is initialized using a iDim-dependent function (helper)
|
|
template<typename T , unsigned D, typename F > |
std::array< T, D > | olb::meta::make_array_f (F &&f) |
| Return std::array<T,D> where T is initialized using a iDim-dependent function.
|
|
template<auto... VALUE, typename COND > |
constexpr bool | olb::meta::indexed_pack_contains (COND cond) |
| Returns true iff at least one VALUE satisfies COND.
|
|
template<std::size_t... Is, std::size_t... Js> |
constexpr auto | olb::meta::operator+ (std::index_sequence< Is... >, std::index_sequence< Js... >) |
| Concatenate two index sequences.
|
|
template<std::size_t... Is> |
constexpr auto | olb::meta::array_from_index_sequence (std::index_sequence< Is... >) |
| Convert index sequence into an array of its values.
|
|
template<typename PREDICATE , std::size_t... Is> |
constexpr auto | olb::meta::filter_index_sequence (PREDICATE predicate, std::index_sequence< Is... >) |
| Return index sequence of Is matching PREDICATE depending on index.
|
|
template<typename TYPES , typename PREDICATE , std::size_t... Is> |
constexpr auto | olb::meta::filter_index_sequence (PREDICATE predicate, std::index_sequence< Is... >) |
| Return index sequence of Is matching PREDICATE depending on type in TYPES.
|
|
template<typename TYPES , template< typename > class COND, std::size_t... Is> |
constexpr auto | olb::meta::filter_index_sequence (std::index_sequence< Is... >) |
| Return index sequence of Is matching COND in TYPES.
|
|
template<typename TYPES , template< typename > class COND> |
constexpr auto | olb::meta::filter_index_sequence () |
| Return index sequence of Is matching COND using index_sequence of TYPES.
|
|
template<typename MAP , std::size_t... Is> |
constexpr auto | olb::meta::map_index_sequence (MAP map, std::index_sequence< Is... >) |
|
template<std::size_t N, std::size_t I, std::size_t... Is> |
constexpr auto | olb::meta::take_n_sequence (std::index_sequence< I, Is... >) |
|
template<std::size_t N, std::size_t I, std::size_t... Is> |
constexpr auto | olb::meta::drop_n_sequence (std::index_sequence< I, Is... >) |
|
template<std::size_t N> |
constexpr auto | olb::meta::zero_sequence () |
|
template<std::size_t I, std::size_t O> |
constexpr auto | olb::meta::make_index_sequence_in_range () |
|
template<std::size_t... Is> |
constexpr bool | olb::meta::is_zero_sequence (std::index_sequence< Is... >) |
|
template<typename F , std::size_t... INDICES> |
void | olb::meta::call_n_times (F &&f, std::index_sequence< INDICES... >) |
| Call F for each index (exlicitly unrolled loop)
|
|
template<unsigned N, typename F > |
void | olb::meta::call_n_times (F &&f) |
| Call F for each i in 0..N-1 (exlicitly unrolled loop)
|
|
template<typename TYPES , typename Fa , typename Fb , std::size_t Ia, std::size_t Iaa, std::size_t... Is> |
void | olb::meta::index_sequence_for_subsequence_L2 (Fa &&fa, Fb &&fb, std::index_sequence< Ia, Iaa, Is... > seq) |
| Call fa for indices in index_sequence and call fb for indices in between indices in.
|
|
template<typename TYPES , typename Fa , typename Fb , std::size_t I, std::size_t... Is> |
void | olb::meta::index_sequence_for_subsequence_L1 (Fa &&fa, Fb &&fb, std::index_sequence< I, Is... > seq) |
| Call fa for indices in index_sequence and call fb for indices in between indices in.
|
|
template<typename TYPES , typename Fa , typename Fb , std::size_t... Is> |
void | olb::meta::index_sequence_for_subsequence (Fa &&fa, Fb &&fb, std::index_sequence< Is... > seq) |
| Call fa for indices in index_sequence and call fb for indices in between indices in.
|
|