17 #ifndef OPENKALMAN_COMPATIBILITY_VIEWS_VIEW_CONCEPTS_HPP 18 #define OPENKALMAN_COMPATIBILITY_VIEWS_VIEW_CONCEPTS_HPP 28 #ifdef __cpp_lib_ranges 29 using std::ranges::view_base;
30 using std::ranges::enable_view;
31 using std::ranges::view;
32 using std::ranges::viewable_range;
42 template<
typename T,
typename U, std::enable_if_t<not std::is_same_v<T, view_
interface<U>>,
int> = 0>
46 template<
typename T,
typename =
void>
51 std::void_t<decltype(is_derived_from_view_interface_test(std::declval<T>(), std::declval<T>()))>> : std::true_type {};
58 (std::is_base_of_v<view_base, T> and stdex::convertible_to<const volatile T&, const volatile view_base&>) or
64 view = range<T> and stdex::movable<T> and enable_view<T>;
73 viewable_range = stdex::ranges::range<T> and
74 ((view<stdex::remove_cvref_t<T>> and stdex::constructible_from<stdex::remove_cvref_t<T>, T>) or
75 (not view<remove_cvref_t<T>> and
76 (std::is_lvalue_reference_v<T> or
constexpr bool value
T is a fixed or dynamic value that is reducible to a number.
Definition: value.hpp:45
Definition: view_interface.hpp:32
Exposition-only definitions from teh c++ language standard.
Definitions relating to the availability of c++ language features.
Definition: view-concepts.hpp:38
Definition: common.hpp:200
Whether the argument is a specialization of std::initializer_list.
Definition: exposition.hpp:76
Global definitions for OpenKalman.
Definition: view-concepts.hpp:47