Empirical
|
Namespaces | |
__attrs_impl | |
__impl_attr_base | |
__impl_attrs_merge | |
__impl_attrs_reduce | |
__impl_has_attr | |
Classes | |
class | Attrs |
struct | has_attribute |
struct | is_attribute_value |
struct | is_attributes_pack |
struct | is_attributes_pack< Attrs< U... > > |
struct | is_same_attribute |
struct | value_tag |
Functions | |
template<typename... T> | |
constexpr Attrs< std::decay_t< T >... > | MakeAttrs (T &&...props) |
template<typename I , typename R , typename... A> | |
constexpr auto | MergeReduce (I &&init, R &&reducer, A &&...attrs) |
template<typename I , typename R , typename... A> | |
constexpr auto | Reduce (I &&init, R &&reducer, A &&...attrs) |
template<typename F , typename... A> | |
constexpr void | MergeForeach (F &&callback, A &&...attrs) |
template<typename F , typename... A> | |
constexpr void | Foreach (F &&callback, A &&...attrs) |
template<typename... U> | |
constexpr auto | Merge (U &&...packs) -> decltype(MergeReduce(Attrs<> |
template<class H , class... T> | |
std::ostream & | operator<< (std::ostream &out, const Attrs< H, T... > &attrs) |
std::ostream & | operator<< (std::ostream &out, const Attrs<> &attrs) |
Variables | |
template<typename T > | |
constexpr bool | is_attribute_value_v = is_attribute_value<T>::value |
template<typename T > | |
constexpr bool | is_attributes_pack_v = is_attributes_pack<T>::value |
template<typename Pack , typename Attr > | |
constexpr bool | has_attribute_v = has_attribute<Pack, Attr>::value |
constexpr void emp::tools::Foreach | ( | F && | callback, |
A &&... | attrs | ||
) |
constexpr Attrs< std::decay_t< T >... > emp::tools::MakeAttrs | ( | T &&... | props | ) |
An alternative syntax for creating attribute packs. Takes any number of attributes and returns a pack containing each of those attributes.
constexpr auto emp::tools::Merge | ( | U &&... | packs | ) | -> decltype(MergeReduce(Attrs<> |
Creates a new attribute pack which has all the attributes of this pack and another pack. Values will be taken from other other pack preferentially.
constexpr void emp::tools::MergeForeach | ( | F && | callback, |
A &&... | attrs | ||
) |
constexpr auto emp::tools::MergeReduce | ( | I && | init, |
R && | reducer, | ||
A &&... | attrs | ||
) |
std::ostream& emp::tools::operator<< | ( | std::ostream & | out, |
const Attrs< H, T... > & | attrs | ||
) |
std::ostream& emp::tools::operator<< | ( | std::ostream & | out, |
const Attrs<> & | attrs | ||
) |
constexpr auto emp::tools::Reduce | ( | I && | init, |
R && | reducer, | ||
A &&... | attrs | ||
) |
constexpr bool emp::tools::has_attribute_v = has_attribute<Pack, Attr>::value |
constexpr bool emp::tools::is_attribute_value_v = is_attribute_value<T>::value |
constexpr bool emp::tools::is_attributes_pack_v = is_attributes_pack<T>::value |