1 #ifndef fhiclcpp_type_traits_h 2 #define fhiclcpp_type_traits_h 16 #include <type_traits> 29 template <
typename T,
typename KeysToIgnore>
37 template <
typename... ARGS>
39 template <
typename... ARGS>
42 template <
typename T, std::
size_t SZ>
44 template <
typename T, std::
size_t SZ>
47 template <
typename T,
typename... ARGS>
49 template <
typename T,
typename... ARGS>
60 using std::is_floating_point;
62 template <
bool b,
typename T =
void>
66 struct is_int : std::integral_constant<bool,
67 std::is_integral<T>::value &&
68 !std::is_unsigned<T>::value> {};
76 template <
typename T,
typename =
void>
89 &T::operator()>> : std::true_type {};
96 template <
typename T, const_flavor C>
101 template <
typename T>
103 using type = std::add_const_t<T>;
106 template <
typename T, const_flavor C>
112 template <
typename Container>
115 template <
typename ARG, std::
size_t SZ>
117 template <
typename... ARGS>
119 template <
typename... ARGS>
125 template <
typename T>
128 template <
typename T,
typename KeysToIgnore>
134 template <
typename T>
137 template <
typename T>
143 template <
typename T>
146 template <
typename T>
149 template <
typename T>
152 template <
typename T, std::
size_t SZ>
156 template <
typename... TYPES>
160 template <
typename T,
typename... ARGS>
167 template <
typename T>
180 template <
typename T>
184 template <
typename T,
typename KeysToIgnore>
187 template <
typename T>
191 template <
typename T>
194 template <
typename T>
198 template <
typename T, std::
size_t SZ>
201 template <
typename T, std::
size_t SZ>
205 template <
typename... TYPES>
208 template <
typename... TYPES>
212 template <
typename T,
typename... ARGS>
215 template <
typename T,
typename... ARGS>
216 struct is_fhicl_type<fhicl::OptionalTupleAs<T(ARGS...)>> : std::true_type {};
221 template <
typename T>
226 template <
typename T, std::
size_t SZ>
231 template <
typename T,
typename KeysToIgnore>
236 template <
typename... ARGS>
241 template <
typename T,
typename... ARGS>
246 template <
typename T>
251 template <
typename T, std::
size_t SZ>
256 template <
typename T>
261 template <
typename... ARGS>
266 template <
typename T,
typename... ARGS>
272 template <
typename T>
278 template <
typename T>
283 template <
typename T>
288 template <
typename T, std::
size_t SZ>
293 template <
typename S,
typename KeysToIgnore>
298 template <
typename... ARGS>
303 template <
typename T,
typename... ARGS>
309 template <
typename... ARGS>
std::is_unsigned< T > is_uint
std::is_arithmetic< T > is_numeric
std::array< tt::return_type< T >, N > value_type
typename fhicl::Tuple< ARGS... >::value_type value_type
enable_if_same_t< FT, decltype(f), R > enable_if_function_exists_t
typename fhicl::TupleAs< T(ARGS...)>::value_type value_type
std::add_const_t< T > type
typename fhicl::Sequence< T, SZ >::value_type value_type
typename fhicl_type_impl< T >::type fhicl_type
typename fhicl::Table< S, KeysToIgnore >::value_type value_type
typename fhicl::Atom< T >::value_type value_type
std::enable_if<!b, T > disable_if
typename maybe_const< T, C >::type maybe_const_t
typename return_type_impl< ARGS... >::value_type return_type