9#include <stratax/core/dtypes/Types.hpp>
11namespace stratax::core::concept_detail {
13template<
typename T,
typename... Candidates>
15 (std::same_as<std::remove_cvref_t<T>, Candidates> || ...);
19 std::same_as<std::remove_cvref_t<T>, stratax::dtype::bool_>;
26 stratax::dtype::int16,
27 stratax::dtype::int32,
28 stratax::dtype::int64,
29 stratax::dtype::uint8,
30 stratax::dtype::uint16,
31 stratax::dtype::uint32,
32 stratax::dtype::uint64>;
38 stratax::dtype::float32,
39 stratax::dtype::float64,
40 stratax::dtype::longdouble>;
46 stratax::dtype::complex64,
47 stratax::dtype::complex128,
48 stratax::dtype::clongdouble>;
67namespace stratax::container {
100struct is_array<stratax::container::Vector<T>> : std::true_type {};
105struct is_array<stratax::container::Matrix<T>> : std::true_type {};
110struct is_array<stratax::container::Tensor<T>> : std::true_type {};
125 const std::remove_cvref_t<T>& array,
128 typename std::remove_cvref_t<T>::value_type;
130 { array.size() } -> std::convertible_to<std::size_t>;
131 { array.empty() } -> std::convertible_to<bool>;
132 { array.rank() } -> std::convertible_to<std::size_t>;
135 { array[index] } -> std::convertible_to<
136 typename std::remove_cvref_t<T>::value_type>;
137 { array.begin() } -> std::input_iterator;
138 { array.end() } -> std::sentinel_for<
decltype(array.begin())>;
149 std::floating_point<std::remove_cvref_t<T>>;
Identifies array-like types through their common logical interface.
Trait identifying supported Stratax owning array specializations.