1#ifndef _BBM_CONCEPTS_UTIL_H_
2#define _BBM_CONCEPTS_UTIL_H_
18 template<
typename T,
template<
typename...>
typename TRAIT,
typename... ARGS>
24 template<
template<
typename...>
typename TRAIT,
typename... ARGS>
25 concept valid_trait = std::same_as<TRAIT<ARGS...>, TRAIT<ARGS...>>;
30 template<
typename T,
typename... U>
36 template<
typename T,
typename... U>
42 template<
typename RHS,
typename LHS>
45 { l = std::forward<RHS>(r) };
165 template<
typename T,
typename TUP>
168 { std::make_from_tuple<T>( std::declval<TUP>() ) };
178 { std::tuple_size<std::decay_t<T>>
::value };
184 template<
typename L,
typename... ARGS>
assignable_to: reverse of std::assignable_from
Definition: util.h:43
constructible_from_tuple concept
Definition: util.h:166
std::get supported
Definition: util.h:175
bit operators
Definition: util.h:124
logical operators
Definition: util.h:139
Check if lambda/functor takes a set of arguments.
Definition: util.h:185
true if type is the same as all of the listed types
Definition: util.h:37
true if type is the same as any of the listed types
Definition: util.h:31
Concept wrapper around a type trait: check if T meets the type TRAIT<T,ARGS...>
Definition: util.h:19
Definition: aggregatebsdf.h:29
decltype(auto) value(T &&t)
return the value of an attribute, or if not an attribute the object
Definition: attribute_value.h:20