MetaUtils Namespace Reference
Detailed DescriptionTypedef Documentation◆ detected_or
template<class Default , template< class... > class Op, class... Args>
Definition at line 98 of file MetaUtils.h. ◆ detected_t
template<template< class... > class Op, class... Args>
Definition at line 95 of file MetaUtils.h. ◆ is_detected
template<template< class... > class Op, class... Args>
Definition at line 92 of file MetaUtils.h. ◆ is_detected_exact
template<class Expected , template< class... > class Op, class... Args>
Definition at line 101 of file MetaUtils.h. ◆ is_instance
template<typename T , template< typename ... > class U>
Detects if type T is an instance of template U. Definition at line 89 of file MetaUtils.h. Function Documentation◆ check()
Definition at line 115 of file MetaUtils.h. 115 {
116 if (pred == false)
117 std::clog << funcName << " FAILED\n";
118 return (int)(pred ? EXIT_SUCCESS : EXIT_FAILURE);
119 }
◆ checkConcept()
template<typename T , template< class U > class Concept>
checks whether if T satisfies user defined Concept
Definition at line 111 of file MetaUtils.h. 111 {
112 return Concept<T>::checkResult::value;
113 }
◆ removeTupleElement()
template<size_t I, typename... Ts>
Definition at line 148 of file MetaUtils.h. 148 {
149 return _removeTupleElement<I>(tup, std::make_index_sequence<sizeof...(Ts)>{});
150 }
◆ staticFor()
template<size_t N, class Func >
Used to apply functor on tuple. Calls lambda with integral constant, which can be used to query tuple elements via std::get<I>(), and thus iterate over tuple. To use, create lambda which captures every necessary variable by referenrece (or value) and has (auto I) parameter. Then use I inside lambda to call templated functions. Definition at line 35 of file MetaUtils.h. 35 {
36 staticForImpl(std::forward<Func>(f),
37 std::make_index_sequence<N>{});
38 }
constexpr void staticForImpl(Func &&f, std::index_sequence< Is... >) Definition MetaUtils.h:14 References staticForImpl(). Referenced by YODA::containsNan(). ◆ staticForImpl()
template<class Func , std::size_t... Is>
Definition at line 14 of file MetaUtils.h. 15 {
16 // Use C++17 fold expressions to apply Func f
17 // to all Is... in sequence
18 //
19 // Won't work on empty tuple (Binning is not intended to work with 0 dimensions).
20 //
21 // std::integral_constant used to encode value into type, otherwise it's not
22 // possible to use Is inside functor as consant expression
23 // (std::get<Is> etc. won't work)
24
25 ((void)f(std::integral_constant<std::size_t, Is>()), ...);
26 }
Referenced by staticFor(). Variable Documentation◆ is_detected_v
template<template< class... > class Op, class... Args>
Definition at line 104 of file MetaUtils.h. Generated on Sun Feb 9 2025 18:56:41 for YODA - Yet more Objects for Data Analysis by |