33template <FieldVector Vec>
66template <
class Product>
70template <FieldVector Vec>
78template <
class Product>
82template <
class Product>
87template <
class Product>
92template <
class Product>
104template <
class Product>
108 {
product(
lhs,
rhs) } -> std::same_as<inner_product_codomain_t<Product>>;
122template <FieldVector Vec>
Field classified by scalar_traits as complex.
Callable contract for a trait-registered inner-product operation.
constexpr auto inner_product(const Vec &lhs, const Vec &rhs)
Evaluate the canonical inner product for two field vectors.
std::remove_cvref_t< T > remove_cvref_t
Remove top-level const, volatile, and reference qualification.
typename vector_traits_t< Vec >::element_type vector_element_t
Registered vector coordinate type.
typename inner_product_traits_t< Product >::scalar_type inner_product_scalar_t
Registered scalar field associated with the product domain.
typename inner_product_traits_t< Product >::codomain_type inner_product_codomain_t
Registered result type of the inner product.
typename inner_product_traits_t< Product >::domain_type inner_product_domain_t
Registered vector domain after product cv/ref normalization.
constexpr std::size_t mat_rows_v
Registered compile-time row count after cv/ref normalization.
Canonical inner product on a fixed-size vector over a scalar field.
vector_element_t< domain_type > scalar_type
Real or complex scalar field of the vector domain.
constexpr codomain_type operator()(const domain_type &lhs, const domain_type &rhs) const
Pair two vectors from the same domain.
remove_cvref_t< Vec > domain_type
Unqualified vector type accepted by both arguments.
scalar_type codomain_type
Scalar result type; equal to scalar_type.
scalar_type codomain_type
vector_element_t< domain_type > scalar_type
remove_cvref_t< Vec > domain_type
Customization point for inner-product associated types.