16 #ifndef OPENKALMAN_COLLECTIONS_UNIFORM_TUPLE_LIKE_HPP 17 #define OPENKALMAN_COLLECTIONS_UNIFORM_TUPLE_LIKE_HPP 29 concept move_constructible_object_or_lvalue_ref =
31 inline constexpr
bool move_constructible_object_or_lvalue_ref =
33 (stdex::move_constructible<T> and std::is_object_v<T>) or
34 std::is_lvalue_reference_v<T>;
38 template<
typename T,
typename = std::make_index_sequence<size_of_v<T>>>
39 struct has_viewable_elements : std::false_type {};
41 template<
typename T, std::size_t...i> requires
42 (... and move_constructible_object_or_lvalue_ref<collection_element_t<i, T>>)
43 struct has_viewable_elements<T,
std::index_sequence<i...>> :
std::true_type {};
45 template<
typename T,
typename = std::make_index_sequence<size_of_v<T>>,
typename =
void>
48 template<
typename T, std::size_t...i>
50 (... and move_constructible_object_or_lvalue_ref<typename collection_element<i, T>::type>)>> : std::true_type {};
53 template<
typename T,
typename =
void>
60 template<
typename T,
typename =
void>
76 uniformly_gettable<T> and
80 inline constexpr
bool viewable_tuple_like =
81 uniformly_gettable<T> and
Namespace for collections.
Definition: collections.hpp:27
constexpr bool viewable_tuple_like
A uniformly_gettable object that has a common_collection_type and can be converted into a collection_...
Definition: viewable_tuple_like.hpp:80
Definition: viewable_tuple_like.hpp:61
Definition for collections::size_of.
constexpr bool value
T is a fixed or dynamic value that is reducible to a number.
Definition: value.hpp:45
Definition: viewable_tuple_like.hpp:46
Definition: viewable_tuple_like.hpp:54
constexpr bool fixed_value_compares_with
T has a fixed value that compares with N in a particular way based on parameter comp.
Definition: fixed_value_compares_with.hpp:74
The common type within a collection, if it exists.
Definition: common_collection_type.hpp:34
Definition for collections::common_collection_type.