Tools to reflect on whether types expose other types typically associated with various spaces.
More...
|
template<class T > |
constexpr bool | sequoia::maths::has_commutative_ring_type_v |
| Compile time constant reflecting whether a type exposes a nested type named commutative_ring_type which satisifes the weak_commutative_ring concept.
|
|
template<class T > |
constexpr bool | sequoia::maths::has_field_type_v |
| Compile time constant reflecting whether a type exposes a nested type named field_type which satisifes the weak_field concept.
|
|
template<class T > |
constexpr bool | sequoia::maths::defines_commutative_ring_v {has_commutative_ring_type_v<T> || has_field_type_v<T>} |
| Compile time constant reflecting whether a type exposes a nested type with the properties of a commutative ring.
|
|
template<class T > |
constexpr bool | sequoia::maths::defines_field_v |
| Reports whether a type exposes a nested type with the properties of a field.
|
|
template<class T > |
constexpr bool | sequoia::maths::has_dimension_v |
| Compile time constant reflecting whether a type exposes a nested value, dimension, convertible to a std::size_t.
|
|
template<class T > |
constexpr bool | sequoia::maths::has_set_type_v |
| Compile time constant reflecting whether a type exposes a nested type named set_type.
|
|
template<class T > |
constexpr bool | sequoia::maths::has_vector_space_type_v |
| Compile time constant reflecting whether a type exposes a nested vector_space_type which satisfies the vector_space concept.
|
|
template<class T > |
constexpr bool | sequoia::maths::has_free_module_type_v |
| Compile time constant reflecting whether a type exposes a nested free_modul_type which satisfies the vector_space concept.
|
|
template<convex_space ConvexSpace> |
constexpr std::size_t | sequoia::maths::dimension_of {free_module_type_of_t<ConvexSpace>::dimension} |
| Helper to extract the dimension of the free module associated with a convex space.
|
|
Tools to reflect on whether types expose other types typically associated with various spaces.
◆ defines_commutative_ring_v
Compile time constant reflecting whether a type exposes a nested type with the properties of a commutative ring.
The point here is that a field is a special case of a ring. Therefore, anything which defines a field is implicitly defining a ring.
◆ defines_field_v
template<class T >
constexpr bool sequoia::maths::defines_field_v |
|
inlineconstexpr |
Initial value:{
has_field_type_v<T>
|| requires {
typename T::commutative_ring_type;
}
}
concept representing reasonable approximations to a field.
Definition: Spaces.hpp:334
Reports whether a type exposes a nested type with the properties of a field.
The point here is to capture the case where a type exposes a nested type commutative_ring_type but the latter satisfies not just the weak_commutative_ring concept but also the strong weak_field concept.
◆ has_commutative_ring_type_v
template<class T >
constexpr bool sequoia::maths::has_commutative_ring_type_v |
|
inlineconstexpr |
Initial value:{
requires {
typename T::commutative_ring_type;
}
}
concept representing reasonable approximations to a commutative ring.
Definition: Spaces.hpp:322
Compile time constant reflecting whether a type exposes a nested type named commutative_ring_type which satisifes the weak_commutative_ring concept.
◆ has_dimension_v
template<class T >
constexpr bool sequoia::maths::has_dimension_v |
|
inlineconstexpr |
Initial value:{
requires { { T::dimension } -> std::convertible_to<std::size_t>; }
}
Compile time constant reflecting whether a type exposes a nested value, dimension, convertible to a std::size_t.
◆ has_field_type_v
template<class T >
constexpr bool sequoia::maths::has_field_type_v |
|
inlineconstexpr |
Initial value:{
requires {
typename T::field_type;
}
}
Compile time constant reflecting whether a type exposes a nested type named field_type which satisifes the weak_field concept.
◆ has_free_module_type_v
template<class T >
constexpr bool sequoia::maths::has_free_module_type_v |
|
inlineconstexpr |
Initial value:{
requires {
typename T::free_module_type;
}
}
concept for a free module, implicitly understood to be over a commutative ring.
Definition: Spaces.hpp:476
Compile time constant reflecting whether a type exposes a nested free_modul_type which satisfies the vector_space concept.
◆ has_set_type_v
template<class T >
constexpr bool sequoia::maths::has_set_type_v |
|
inlineconstexpr |
Initial value:{
requires { typename T::set_type; }
}
Compile time constant reflecting whether a type exposes a nested type named set_type.
◆ has_vector_space_type_v
template<class T >
constexpr bool sequoia::maths::has_vector_space_type_v |
|
inlineconstexpr |
Initial value:{
requires {
typename T::vector_space_type;
}
}
concept for a vector space, which is a special case of a free module
Definition: Spaces.hpp:482
Compile time constant reflecting whether a type exposes a nested vector_space_type which satisfies the vector_space concept.